创建和执行基本存储过程

使用库数据库中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