寫一個簡單的儲存過程
建立儲存過程的一般寫法為:
CREATE PROCEDURE (儲存過程名稱)
<引數(可不寫)>
AS
BEGIN
(要執行的語句)
END
例如:
CREATE PROCEDURE sp_MyPro
@uid int
AS
BEGIN
SELECT * FROM Users WHERE uid = @uid
END
建立成功後,我們可以直接執行該儲存過程:
exec sp_MyPro 5——從Users表中查詢uid為5的記錄
不過有時候我們需要在儲存過程中動態的改變執行語句中的引數個數(例如,我們可能還需要查使用者名稱為@name,使用者組為@group的記錄),這時候我們可以動態的改變在儲存過程中執行的語句:
CREATE PROCEDURE sp_MyPro
@uid int,
@name varchar(20),
@group int
AS
BEGIN
DECLARE @cmd varchar(256)
SET @cmd = 'SELECT * FROM Users WHERE 1 = 1'
IF (@uid <> 0)--使用者id為0表示傳入的是空值(int型預設值為0)
SET @cmd = @cmd + ' AND uid = ' + CONVERT(varchar(20), @uid)--這裡要將整型轉換為字串型別
IF (@name <> null) --使用者名稱為null表示傳入的是空值
SET @cmd = @cmd + ' AND name = ''' + @name + ''''--注意:在sql server中,兩個單引號表示字串中的一個單引號
IF (@group <> 0)--使用者組id為0表示傳入的是空值
SET @cmd = @cmd + ' AND group = ' + CONVERT(varchar(20), @group)--這裡要將整型轉換為字串型別
EXEC(@cmd)
END
執行該儲存過程:
exec sp_MyPro 1,null,0-- 查詢使用者id為1的記錄
exec sp_MyPro 0,'user1',3 --查詢使用者名稱為user1,使用者組id為3的記錄