Frage : Wie man Tabellenvariable für Eingangsparameter verwendet

Hallo, mögen das

I morgens versuchend, etwas zu tun das folgende, das nicht arbeitet:

select *
from table1
where Col1 (@list) im

I haben im Allgemeinen ein gespeichertes Verfahren, das einen Parameter, der eine Komma abgegrenzte Liste von IDs sein kann, z.B. annimmt:
'1,2,3,4'< Br/>
I möchten nicht dynamischen sql verwenden aber eine Tabellenvariable und eine Verbindung auf der Tabellenvariable dann tun eher verwenden. Aber ich bin nicht sicher, wie man die Liste von Werten in die Tabellenvariable analysiert. Wie kann dieses getan werden?

Thanks

Antwort : Wie man Tabellenvariable für Eingangsparameter verwendet

Sie können die Funktion unten verwenden, um die Tabelle herzustellen, die Sie benötigen
gegründet auf den Komma-getrennten Werten haben Sie.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
Funktion fn_MySplit verursachen (
 @String nvarchar (4000)
 )
zurückbringen die @ValueTable Tabelle #= ([Wert] nvarchar (4000))
anfangen
 das @NextString erklären nvarchar (4000)
 @Pos int erklären
 @NextPos int erklären
 das nvarchar @Delimeterer erklären (1)
 das nvarchar @CommaCheck erklären (1)
 
 --Initialisieren
 das @NextString einstellen = ''
 @Delimeter einstellen = „,“
 @CommaCheck einstellen = recht (@String, 1) 
 
 --Auf schleppendem Komma überprüfen, wenn nicht existiert, EINSATZ
 wenn (@CommaCheck <> @Delimiter)
  das @String = das @String einstellen + @Delimiter
 
 --Position des ersten Kommas erhalten
 @Pos = charindex (das @Delimiter, @String), einstellen
 @NextPos einstellen = 1
 
 --Schlingen, während es noch ein Komma in der Schnur der Niveaus gibt
 während (@pos <>  0)  
 anfangen
  das @NextString einstellen = die Teilkette (@String, 1, @Pos - 1)
 
  in @ValueTable ([Wert]) Werte (@NextString) einsetzen
 
  das @String einstellen = die Teilkette (@String, len @pos +1, (@String))
  
  @NextPos = @Pos einstellen
  @pos =  charindex (das @Delimiter, @String), einstellen
 Ende
 
 Rückkehr
Ende
Weitere Lösungen  
 
programming4us programming4us