Ich habe eine folgende gespeicherte Prozedur
%Vor% und ich möchte diese gespeicherte Prozedur aufrufen, wobei @state 0
und 1
ist und die Ergebnismengen von beiden Aufrufen kombiniert mit UNION
Semantik zurückgegeben werden, so dass ich ein neues Resultset mit Zeilen aus habe sowohl der erste Anruf als auch der zweite Anruf.
Etwas wie (imaginäres SQL):
%Vor%Wie erreiche ich das?
Ein langer Weg wäre, einen Wrapper zu erstellen, der das tut - eine Funktion, die eine Liste von Zuständen aufnimmt und sie zu einer finalen Tabelle hinzufügt, die zurückgegeben wird.
Sie können auch festlegen, welche Technologie diese Prozedur aufruft, um die Datensätze zu verknüpfen (d. h., dass .NET die Ergebnismenge jedes Zustands anfügt, den Sie untersuchen)
Wenn Sie eine Statusliste an den Parameter 'state' übergeben möchten, können Sie eine dynamische SQL-Abfrage erstellen
%Vor%Dies funktioniert hervorragend für einfache Verfahren; Es kann jedoch länger dauern, bis Änderungen vorgenommen werden.
.
Hier ist ein CodeProject-Artikel und ein MS SQL Tipps Artikel , die eine bessere Arbeit in die Details geht
.
BEARBEITEN: Der Parameter @state muss ein nVarChar sein, seit Sie eine kommagetrennte Liste von int-Werten übergeben haben
Wenn die gespeicherte Prozedur, die Sie aufrufen, eine temporäre Tabelle mit dem gleichen Namen wie eine in der aufrufenden Prozedur hat, erhalten Sie diesen Fehler.
z.B. sp1 hat temporäre Tabelle #results
sp2 erstellt Tabelle # Ergebnisse (Felder) Wenn dann versucht wird, in #results in sp2 einzufügen, würde das Ergebnis des Aufrufs von sp1 mit diesem Fehler fehlschlagen. Ändern Sie die temporäre Tabelle in sp2 in #result und versuchen Sie es erneut und Sie sollten sehen, dass dies jetzt funktioniert.
Tags und Links sql sql-server stored-procedures tsql union