指定参数名称

每个存储过程参数都必须用唯一的名称进行定义。与标准的 Transact-SQL 变量相同,存储过程参数名称必须以单个 @ 字符开头,并且必须遵守对象标识符规则。可在存储过程中使用参数名称以获得参数值并对其进行更改。

既可以通过显式指定参数名称并分配适当的值,也可以通过提供在 CREATE PROCEDURE 语句中给定的参数值(而不指定参数名称),来向存储过程传递值。例如,如果存储过程 my_proc 应有三个参数,分别命名为 @first@second@third,则可以将传递到该存储过程的值分配给参数名称,例如:

EXECUTE my_proc @second = 2, @first = 1, @third = 3;

或者按照位置传递,而不指定参数名称:

EXECUTE my_proc 1, 2, 3;

在执行存储过程时指定参数名称允许按任意顺序提供参数。如果未指定参数名称,则必须按照参数在存储过程中定义时的顺序(从左至右)来提供参数。另外,必须提供某一给定参数前面的所有参数,即使这些参数可选并且有默认值。例如,如果 my_proc 的参数全部是可选的,则执行 my_proc 时可以仅提供第一个和第二个参数的值,但不能仅提供第二个和第三个参数的值。这是必需的,否则 Microsoft SQL Server 将无法识别所指定的参数。