2

私のストアドプロシージャは次のように定義されています

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'.
4

4 に答える 4

3

兄弟、あなたが何を選択しようとしているのかわかりませんが、以下のクエリを試すことができるかもしれません:

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
于 2013-07-25T06:48:53.963 に答える
2

これに変更すると動作します

    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'
于 2013-07-25T07:00:46.267 に答える
0

これがあなたの質問の実用的なコードです。

この方法でお試しください。それはうまくいきます。

手順

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'
于 2014-01-13T08:18:13.997 に答える