1. 程式人生 > >SQL Server存儲過程

SQL Server存儲過程

begin -m open pen roman DDU 重構 command implement

在重構機房的時候,有非常多地方用到了存儲過程,在這裏小小的總結一下。

存儲過程(Stored Procedure)是一組為了完畢特定功能的SQL語句集,經編譯後存儲在數據庫中。用戶通過指定的存儲過程的名字並給出參數(假設該存儲過程帶有參數)來運行它。存儲過程通過將處理數據的程序從客戶應用程序移動到server,從而能夠減少網絡流量。並提高性能和數據完整性。

1、創建

主要有兩種方法:

(1)利用SQL Server Management Studio創建存儲過程

①單擊數據庫前的"+"號,然後單擊"可編程性"。找到"存儲過程",右擊"新建存儲過程",系統會自己主動生成一個模板。僅僅須要改動對應的方法就可以。

②利用T-SQL創建存儲過程

CREATE PROCEDURE  過程名
@Param  參數類型
.......
@Param  參數類型  output
......
AS
BEGIN
命令行或命令塊
END

比如。創建加入用戶的存儲過程:

CREATE procedure [dbo].[pro_AddUser]
@user_id varchar(11),
@user_name varchar(11),
@user_level varchar(10),
@user_pwd varchar(11),
@user_register varchar(10)
as
insert T_User values (@user_id ,@user_name,@user_level ,@user_pwd ,@user_register )

在這裏有須要註意的幾點:

*過程名:盡量以pro_或者proc_開頭。不建議使用使用sp_為前綴。由於SQL Server系統的存儲過程都是以sp_開頭,這樣在查找的時候會先查找系統自身的,減少查詢速度。

*BEGIN...END..之間的語句,主要是存儲過程要運行的任務:

查詢語句:SELECT

插入語句:INSERT

更新語句:UPDATE

刪除語句:DELETE

假設存儲過程返回輸出參數或0,則使用OUTPUT

2、調用

(1)利用T-SQL調用存儲過程

EXECUTE 過程名 [參數值。······]

(2)在client代碼端

D層代碼:

    Public Function Add_User(enuser As Entity.E_User) As Boolean Implements IUser.Add_User
        Dim pt As SqlParameter() = {New SqlParameter("@user_id", enuser.UserID), _
                                    New SqlParameter("@user_name", enuser.UserName), _
                                    New SqlParameter("@user_level", enuser.Level), _
                                    New SqlParameter("@user_pwd", enuser.UserPwd), _
                                    New SqlParameter("@user_register", Entity.E_PubShare.str_id)
                                }
        cmdText = "pro_AddUser"
        Return helper.ExecuteDataTable(cmdText, CommandType.Text, pt)
    End Function

SqlHelper類:

    Public Function ExecuteDataTable(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal pt As SqlParameter()) As Boolean

        Using con As New SqlConnection(strCon)
            Dim cmd As SqlCommand = con.CreateCommand()            

            cmd.CommandText = cmdText            
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Parameters.AddRange(pt)          

            Try
                con.Open()
                Return cmd.ExecuteNonQuery()
                cmd.Parameters.Clear()
               
            Catch ex As Exception
                Return Nothing
                Throw ex
            End Try

        End Using
    End Function

3、反思總結

存儲過程並不算難,可是我在學習的過程中還是出現了不少問題。歸根究竟是對SQL語言還不夠熟練。只是經過幾次卡殼總算是磕磕絆絆的了解的差點兒相同了,這也是我們重構機房的意義所在。把曾經學習到的知識真正運用到實踐中來,是一個查漏補缺完好知識網的過程。遇到問題是在所難免的,不要嫌麻煩,而要把它當成提高自己的機會,每一個細小的困難克服了,終於會實現一個大的飛躍。

SQL Server存儲過程