Speichern Sie das Ergebnis von einer gespeicherten Prozedur, ohne über ein output-parameter

Ich habe 2 gespeicherte Prozeduren: up_proc1 und up_proc2.

Dies ist (eine vereinfachte version) 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 id=@id
   END

   SELECT @id AS ID
GO

Vom up_proc1 ich nenne up_proc2. Was ich erreichen möchte ist das speichern von @id up_proc2 in eine variable deklariert, in up_proc1. Ist dies möglich, ohne über ein output-parameter?

Dies ist, wie up_proc1 aussieht:

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]
  • Warum wollen Sie es vermeiden, einen output-parameter? Das ist genau das, was Sie sind für.
  • Ich bin nicht sehr erfahren mit sql. up_proc2 ist eine vorhandene gespeicherte Prozedur. Ich bin mir nicht sicher, ob das hinzufügen einer Ausgabe-parameter wird nicht brechen jede vorhandene Funktionalität? up_proc2 auch genannt wird, wird von C# - code. Muss ich hinzufügen, dass die output-parameter zur Liste der Parameter beim aufrufen der gespeicherten Prozedur von C#? Wenn nicht, dann könnte ich wahrscheinlich verwenden in der Tat ein output-parameter.
  • Ja, Sie können eine null-output-parameter und C# nicht bemerken (obwohl Sie sollten ändern Sie Ihre C# - code zu verwenden, wenn Sie nur abrufen einer einzelnen skalaren Wert). Bitte siehe meine Antwort.
InformationsquelleAutor TweeZz | 2012-02-21
Schreibe einen Kommentar