建立和執行基本儲存過程

使用庫資料庫中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

你可以使用幾種不同的語法執行過程。首先,你可以使用 EXECUTEEXEC

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