私は2つのストアドプロシージャup_proc1とup_proc2を持っています。出力パラメータを使用せずにストアドプロシージャの結果を格納する
これはup_proc2(の簡易版)です:
CREATE PROCEDURE dbo.up_proc2
@id_campaign uniqueidentifier, @id_subcampaign uniqueidentifier,
@id_lead uniqueidentifier, @offer NVARCHAR(1000) = NULL
AS
SET NOCOUNT ON
DECLARE @id UNIQUEIDENTIFIER
SELECT @id = id FROM prospects WHERE id_lead = @id_lead
AND id_campaign = @id_campaign AND id_subcampaign = @id_subcampaign
IF @id IS NULL
BEGIN
SET @id = newid()
INSERT INTO prospects (id, id_campaign, id_subcampaign, id_lead, offer)
values (@id, @id_campaign, @id_subcampaign, @id_lead, @offer)
END
ELSE
BEGIN
UPDATE prospects set offer = @offer WHERE [email protected]
END
SELECT @id AS ID
GO
up_proc1から、私はup_proc2を呼び出します。私が達成したいのは、up_proc1で宣言された変数にup_proc2の@idを格納することです。これは、出力パラメータを使用せずに可能ですか?
これはup_proc1がどのように見えるかです:テーブル変数に出力を格納しているあなたは何ができるか
CREATE PROCEDURE dbo.up_proc1
AS
SET NOCOUNT ON
DECLARE @fromProc2 UNIQUEIDENTIFIER
-- NOT WORKING
-- select @fromProc2 = exec up_insertProspects [snip]
-- ALSO NOT WORKING
-- exec @fromProc2 = up_insertProspects [snip]
なぜあなたは、出力パラメータを避けたいのですか?これはまさに彼らのためのものです。 –
私はSQLをあまり経験していません。 up_proc2は既存のストアドプロシージャです。出力パラメータを追加しても既存の機能が損なわれないかどうか分かりません。 up_proc2はC#コードからも呼び出されます。 C#からそのストアドプロシージャを呼び出すときに、その出力パラメータをパラメータのリストに追加する必要がありますか?もしそうでなければ、実際に出力パラメータを使用することができます。 – TweeZz
はい、null可能な出力パラメータを追加することはできますが、C#では通知されません(単一のスカラー値のみを取得する場合はC#コードを変更して使用する必要があります)。私の答えを見てください。 –