建立和執行基本儲存過程
使用庫資料庫中的 Authors
表
CREATE PROCEDURE GetName
(
@input_id INT = NULL, --Input parameter, id of the person, NULL default
@name VARCHAR(128) = NULL --Input parameter, name of the person, NULL default
)
AS
BEGIN
SELECT Name + ' is from ' + Country
FROM Authors
WHERE Id = @input_id OR Name = @name
END
GO
你可以使用幾種不同的語法執行過程。首先,你可以使用 EXECUTE
或 EXEC
EXECUTE GetName @id = 1
EXEC Getname @name = 'Ernest Hemingway'
此外,你可以省略 EXEC 命令。此外,在傳入所有引數時,你不必指定要傳入的引數。
GetName NULL, 'Ernest Hemingway'
如果要以與在過程中宣告的順序不同的順序指定輸入引數,可以指定引數名稱並指定值。例如
CREATE PROCEDURE dbo.sProcTemp
(
@Param1 INT,
@Param2 INT
)
AS
BEGIN
SELECT
Param1 = @Param1,
Param2 = @Param2
END
執行此過程的正常順序是先指定 @ Param1 的值,然後再指定 @Param2 的值。所以它看起來像這樣
EXEC dbo.sProcTemp @Param1 = 0,@Param2=1
但你也可以使用以下內容
EXEC dbo.sProcTemp @Param2 = 0,@Param1=1
在這裡,你首先指定 @ param2 的值,然後指定 @ Param1 秒的值。這意味著你不必保持與程式中宣告的順序相同的順序,但你可以根據需要進行任何訂單。但你需要指定要設定值的引數
從任何資料庫訪問儲存過程
此外,你還可以建立一個帶有字首 sp_
的過程,這些 procuedres 與所有系統儲存過程一樣,可以在不指定資料庫的情況下執行,因為 SQL Server 的預設行為。當你執行以“sp_”開頭的儲存過程時,SQL Server 首先在 master 資料庫中查詢該過程。如果在 master 中找不到該過程,則它將查詢活動資料庫。如果你有要從所有資料庫訪問的儲存過程,請在 master 中建立它並使用包含“sp_”字首的名稱。
Use Master
CREATE PROCEDURE sp_GetName
(
@input_id INT = NULL, --Input parameter, id of the person, NULL default
@name VARCHAR(128) = NULL --Input parameter, name of the person, NULL default
)
AS
BEGIN
SELECT Name + ' is from ' + Country
FROM Authors
WHERE Id = @input_id OR Name = @name
END
GO