我在工作中找到了这段代码:
exec dbo.get_name @id = @id, @name = @name output
这是什么意思?我找不到使用此语法的任何示例,也没有找到Microsoft页面上的任何信息。
答案 0 :(得分:5)
执行storedprocedure时,参数可以按照与过程中定义的顺序不同的顺序传递。您必须使用@parameterName
来判断哪个参数在哪个位置传递。
您的代码中有两个单独的内容:
@id
和@name
参数如果以这种方式编写代码,代码可能更容易理解:
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