Wie verwende ich den Ausdruck der allgemeinen Tabelle mit Parametern?

8

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

    
Richard77 07.08.2013, 20:51
quelle

4 Antworten

9

Sie können Tabellenwertefunktion erstellen

%Vor%

und benutze es als

%Vor%     
i-one 08.08.2013, 08:53
quelle
7

Ich habe eine einfache Abfrage mit Ihrem Code erstellt. Sie können es wie -

verwenden %Vor%     
AgentSQL 07.08.2013 21:07
quelle
3

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:

    
Mike Cheel 07.08.2013 20:59
quelle
2

Diese Syntax ist für externe Aliase:

%Vor%

Die einzige Möglichkeit zum Hinzufügen von Parametern besteht darin, Scope-Variablen wie folgt zu verwenden:

%Vor%     
TomerBu 07.12.2015 11:22
quelle

Tags und Links