私はclients
という3つのパラメータを持つストアドプロシージャを持っています。最初はユーザー入力用、最後の2つはOUTPUT
パラメータです。ストアドプロシージャを別のストアドプロシージャから実行して2つの変数を返す
これはコードです:
CREATE PROCEDURE clients
(@name NVARCHAR(100),
@id_client int OUTPUT,
@messg varchar(1) OUTPUT)
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY
BEGIN TRAN
IF NOT EXISTS (SELECT name FROM client WHERE name = @name)
BEGIN
INSERT INTO client(name) VALUES (@name);
SET @id_client = SCOPE_IDENTITY();
SET @messg = 'o'
COMMIT TRAN
END
ELSE
BEGIN
SELECT @id_client = id_client
FROM client
WHERE name = @name;
SET @messg = 'o'
COMMIT TRAN
END
END TRY
BEGIN CATCH
SET @messg = 'e'
ROLLBACK TRAN
END CATCH
END
私は二番目がupdateS
と呼ばれる別のから、このストアドプロシージャを呼び出す必要があり、私は次のことをしようとしている:
CREATE PROCEDURE updateS
(@clientname VARCHAR(100))
AS
BEGIN
SET NOCOUNT ON;
DECLARE @id INT;
DECLARE @msg VARCHAR(1);
EXEC clients @clientname, @id, @msg; --Problem here to retrieve the id
END
このストアドプロシージャクライアントの名前のパラメータがありますが、クライアントのIDを取得する必要がありますが、試行しているようには機能しません。
基本的には、IDを取得して2番目のストアドプロシージャで使用する必要があります。
質問に対するコメント投稿あなたはそれを定義するときにだけでなく、ストアドプロシージャを実行するときOUTPUT
を指定する必要が
のようにパラメータを作成します。それは私が必要としたものです。どうもありがとう。 – TimeToCode