MS SQL: Keine Rückgabewert der gespeicherten Prozedur aufgerufen, in der gespeicherten Prozedur
Ich glaube, ich habe das gleiche problem wie kcrumley beschreibt, in der die Frage "Problem aufrufende gespeicherte Prozedur aus einer anderen gespeicherten Prozedur via classic ASP". Aber seine Frage wirklich nicht include eine Lösung, also gebe ich es noch erschossen, das hinzufügen meiner eigenen Beobachtungen:
Ich habe zwei gespeicherte Prozeduren:
CREATE PROCEDURE return_1 AS BEGIN
SET NOCOUNT ON;
SELECT 1
END
CREATE PROCEDURE call_return_1_and_return_2 AS BEGIN
SET NOCOUNT ON;
EXEC return_1
SELECT 2
END
Beachten Sie, dass beide Verfahren enthalten "SET NOCOUNT ON". Wenn ich ausführen "call_return_1_and_return_2" ich bekomme immer noch zwei Datensätze. Zuerst den Wert 1, dann wird der Wert 2.
Wirft ASP (classic ASP VBScript) aus dem gleis.
Irgendwelche Tipps, wie ich das unterdrücken kann, das erste ResultSet? Warum ist es dort auch mit NOCOUNT?
Überspringen der ersten Datensatzes in ASP ist keine option. Ich brauche eine "Datenbank" - Lösung.
InformationsquelleAutor BlaM | 2009-03-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht die NOCOUNT-das ist, was diese, Ihre gespeicherte Prozeduren haben eine wählen, so dass jeder kommt in seiner eigenen Ergebnismenge. Dies kann vermieden werden, indem Sie Ihre erste gespeicherte Prozedur mit output-Parameter zu übergeben, die Nummer 1 zurück, anstatt eine Auswahl. Die zweite gespeicherte Prozedur könnte dann überprüfen Sie die Ausgabe-parameter, um die Daten, die es braucht, um laufen.
Probieren Sie etwas wie dieses
InformationsquelleAutor Gavin
Matt weist in seinem Kommentar, weder Lösung wirklich 'schlucken' das erste resultset.
Ich weiß nicht, warum Sie wollen, diese aber können Sie 'schlucken' das Ergebnis des ersten exec-durch die Verwendung einer Tabelle variable. Er muss mit der genauen Menge und Art der Spalten des Ergebnissatzes. Etwa so:
InformationsquelleAutor edosoft
Sind diejenigen, die nicht zurückkehren Variablen, sondern output-record setzt. Ich denke, dass, sobald der SQL server geleert Ausgabe, client, Sie sind geschraubt und können nicht nehmen Sie es zurück.
Ich würde dies lösen, indem Sie einen parameter hinzufügen, um SP return_1, dass Steuern würde, wenn return_1 würde wählen Datensätze oder nur Dinge zu tun, still und leise verlassen.
InformationsquelleAutor Axarydax