[英]T-SQL Stored procedure with OUTPUT parameter giving an error
我的存儲過程定義為
create procedure p1
(
@id INT,
@name varchar(20) OUTPUT,
@company varchar(20) OUTPUT
)
AS
BEGIN
select @name = name, @company = company from table1 where id = @id;
END
GO
我叫它用
DECLARE @name varchar(20), @company varchar(20), @id INT;
exec dbo.p1 @id=2, @name OUTPUT, @company OUTPUT;
select @name AS 'NAME', @company AS 'COMPANY'
但是我收到了一個錯誤
'Must pass parameter number 2 and subsequent parameters as '@name = value'. After the form '@name = value' has been used, all subsequent parameters must be passed in the form '@name = value'.
按照錯誤消息中的說明進行操作:
DECLARE @name varchar(20), @company varchar(20), @id INT;
exec dbo.p1 @id=2, @name = @name OUTPUT, @company = @company OUTPUT;
select @name AS 'NAME', @company AS 'COMPANY'
替代方案 - 不要命名參數1:
DECLARE @name varchar(20), @company varchar(20), @id INT;
exec dbo.p1 2, @name OUTPUT, @company OUTPUT;
select @name AS 'NAME', @company AS 'COMPANY'
從EXECUTE
:
form, parameter names and constants do not have to be supplied in the order in which they are defined in the module. 與表單一起使用時,參數名稱和常量不必按照在模塊中定義的順序提供。 form is used for any parameter, it must be used for all subsequent parameters. 但是,如果表單用於任何參數,則必須將其用於所有后續參數。
(因為,顯然,第一種用法可能是定義任何參數,因此它不再假設應按順序分配任何后續的參數)
兄弟,我不確定你要選擇什么,但也許你可以嘗試下面的查詢:
CREATE PROCEDURE p1
(
@id INT,
@name varchar(20) OUTPUT,
@company varchar(20) OUTPUT
)
AS
BEGIN
Set @name = 'name'
Set @company = 'company'
select @name , @company from table1 where id = @id;
END
GO
改變這將工作
DECLARE @name varchar(20), @company varchar(20), @id INT;
select @id=2
exec dbo.p1 @id, @name OUTPUT, @company OUTPUT;
select @name AS 'NAME', @company AS 'COMPANY'
這是您的問題的工作代碼。
請嘗試這種方式。 它會工作正常。
程序
alter procedure my_pro
@id int,
@name varchar(30) output,
@email varchar(50) output
as
begin
select @name=Name,@email=EmailID from Users where id=@id
end
執行
declare @Newname varchar(40)
declare @Newemail varchar(40)
exec my_pro 2,@Newname output, @Newemail output
select @Newname 'Name', @Newemail 'Email'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.