Ich habe die folgende Anweisung in einer Stored Procedure:
%Vor%Welches eine andere gespeicherte Prozedur mit der folgenden Anweisung innerhalb aufruft:
%Vor%Aber wenn ich den Aufruf teste, gibt der EXEC den Wert korrekt aus, aber es ist der @Count-Variablen nicht korrekt zugewiesen. Ich habe Beispiele oder gespeicherte Prozeduren gesehen, die so verwendet wurden, einschließlich hier, aber keiner hatte einen Parameter und einen Rückgabewert (den ich finden konnte). Der ID-Parameter wird in die zweite Anweisung übergeben, die einen Zählwert zurückgibt, der von der ersten StoredProcedure verwendet wurde - alle gelesenen Informationen scheinen anzuzeigen, dass dies funktionieren sollte - aber der @Count-Wert ist nicht null, selbst wenn GetItemCount gibt immer den korrekten Wert zurück.
Dies ist in Microsoft SQL Server 2008, wenn das hilft.
In Ihrer gespeicherten Prozedur sind Sie entweder
a) Den Zählwert einem Ausgabeparameter zuweisen:
%Vor%wird wie folgt aufgerufen:
%Vor%oder, b) Zuweisen des Zählwerts als Rückgabewert:
%Vor%wird wie folgt aufgerufen:
%Vor%Die Lösung (b) von Mr. Matthew wird nicht funktionieren, wenn Sie diese in einer anderen gespeicherten Prozedur aufrufen (Natürlich funktioniert die Lösung (a) perfekt, wenn wir OUTPUT param verwenden). Der Wechsel für die Lösung (b) ist die Lösung von Herrn Madhivanan. d. h. erstellen Sie eine temporäre Tabelle und verwenden Sie sie dann, um sie zu löschen.
Unten sind andere Lösungen ..
Wir können den Wert einer internen OUTPUT-Klausel in einer gespeicherten Prozedur nicht direkt abrufen. Daher müssen wir stattdessen OUTPUT-Parameter oder RETURN VALUE verwenden.
Bitte beachten Sie die folgenden Vorschläge:
LÖSUNG 1:
%Vor%LÖSUNG: 2
%Vor%Was Sie in der Variablen @Count abfangen, ist der Status der Ausführung der gespeicherten Prozedur GetItemCount und nicht der Wert, den Sie erwarten. Um diesen Wert zu erfassen, gibt es zwei Möglichkeiten.
Um einen anderen Parameter @ count als OUTPUT in GetItemCount zu deklarieren. Also haben Sie die GetItemCount-Deklaration wie folgt
CREATE PROCEDURE GetItemCount @ ID int, @ count int-Ausgabe
innen, können Sie
verwendenSELECT @count = COUNT (Element) FROM tblItem WHERE ID = @ID
Tags und Links sql sql-server-2008 stored-procedures parameters return-value