Ich habe eine gespeicherte Prozedur mit zwei CTEs. Der zweite CTE hat einen Parameter
%Vor%Der Anfangsparameter, den ich in das zweite TCE bekommen muss, ist p.CategoryId . Wie mache ich das, ohne eine weitere gespeicherte Prozedur für das zweite CTE erstellen zu müssen?
Danke für Ihre Hilfe
Entfernen Sie zuerst die zweite WITH, trennen Sie jede CTE mit nur einem Komma. Als nächstes können Sie Parameter wie folgt hinzufügen:
%Vor%EDIT (und CLARIFICATION):
Ich habe die Spalten von param1 und param2 in col1 und col2 umbenannt (was ich ursprünglich meinte).
Mein Beispiel geht davon aus, dass jeder SELECT genau zwei Spalten hat. Die Spalten sind optional, wenn Sie alle Spalten der zugrunde liegenden Abfrage zurückgeben wollen UND diese Namen eindeutig sind. Wenn Sie mehr oder weniger Spalten als SELECT haben, müssen Sie Namen angeben.
Hier ist ein anderes Beispiel:
Tabelle:
%Vor%Tabelle mit einigen Zeilen füllen:
%Vor%CTEs:
%Vor%Beachten Sie, dass in den CTEs die Spalten mit Alias versehen sind. MyCTE1 legt Spalten als col1, col2, col3, col4 und MyCTE2-Referenzen MyCTE1.col1 offen, wenn es darauf verweist. Beachten Sie, dass die letzte Auswahl die Spaltennamen von MyCTE2 verwendet.
Ergebnisse:
Tags und Links tsql