@parameter = @parameter语法(SQL Server)

时间:2014-11-28 11:55:01

标签: sql-server tsql

我在工作中找到了这段代码:

exec dbo.get_name @id = @id, @name = @name output

这是什么意思?我找不到使用此语法的任何示例,也没有找到Microsoft页面上的任何信息。

5 个答案:

答案 0 :(得分:5)

执行storedprocedure时,参数可以按照与过程中定义的顺序不同的顺序传递。您必须使用@parameterName来判断哪个参数在哪个位置传递。

您的代码中有两个单独的内容:

  1. 该过程需要@id@name参数
  2. 调用模块时有两个同名的局部变量。
  3. 如果以这种方式编写代码,代码可能更容易理解:

     exec dbo.get_name @id = @customerId, @name = @customerName output
    

答案 1 :(得分:3)

@id = @id中,第一个@id是dbo.get_name存储过程的命名参数。

第二个@id是一个局部变量,它提供参数的值。

答案 2 :(得分:2)

编写该代码的人使用与存储过程参数同名的局部变量 你会在代码中找到这些局部变量的声明:

declare @id int;
declare @name varchar(50);
.
.
[some more code here]
.
.
.
exec dbo.get_name @id = @id, @name = @name output

答案 3 :(得分:1)

这意味着执行dbo.get_name存储过程并且@id = @id意味着将@id本地值传递给@id输入参数而@name = @name意味着您希望输出参数@name分配输出值为局部变量@name。

答案 4 :(得分:1)

这就是它的含义

  • exec dbo.get_name - 执行存储过程名称get_name
  • @id = @id - 你proc接受@id参数,在调用这个proc之前你必须定义一个名为@id的变量并为它赋予一些值。所以你传递给proc的价值。
  • @name = @name output - 与上面相同,但@name中的值将被修改,并且您将获得执行proc作为输出的@name值。这是从程序执行后的返回值。

相同的详细信息是here