Questione : Come usare variabile della tabella per il parametro dell'input

Ciao, il

I che prova a fare qualcosa gradice quanto segue che non funziona:

select * il
from table1
where Col1 nel

I (di @list) ha basicamente una procedura immagazzinata che accetta un parametro che può essere una lista delimitata virgola dei IDs, per esempio: il Br/>
I del
'1,2,3,4'< non vuole usare lo sql dinamico ma piuttosto usare una variabile della tabella ed allora fare un unire sulla variabile della tabella. Ma non sono sicuro come analizzare la lista dei valori nella variabile della tabella. Come può questo essere fatto?

Thanks
class= del

Risposta : Come usare variabile della tabella per il parametro dell'input

Potete usare la funzione qui sotto per generare la tabella che avete bisogno di
sulla base dei valori virgola-separati avete.
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:
36:
37:
38:
39:
generare il fn_MySplit di funzione (
 @String nvarchar (4000)
 )
restituisce la tabella @ValueTable ([valore] nvarchar (4000))
cominciare
 dichiarare @NextString nvarchar (4000)
 dichiarare i @Pos int
 dichiarare i @NextPos int
 dichiarare il @Delimeterer nvarchar (1)
 dichiarare il @CommaCheck nvarchar (1)
 
 --Inizializzare
 fissare @NextString = ''
 regolare il @Delimeter = “,„
 regolare il @CommaCheck = di destra (@String, 1) 
 
 --Controllare per vedere se c'è il virgola di trascinamento, se non esistito, INSERISCONO
 se (@Delimiter <> del @CommaCheck)
  @String stabilito = @String + @Delimiter
 
 --Ottenere la posizione del primo virgola
 regolare i @Pos = il charindex (@Delimiter, @String)
 regolare i @NextPos = 1
 
 --Collegare mentre ci è ancora un virgola nella serie di livelli
 mentre (@pos <>  0)  
 cominciare
  fissare @NextString = sottostringa (che @String, 1, @Pos - 1)
 
  inserire ([valore]) nei valori @ValueTable (@NextString)
 
  fissare @String = sottostringa (che @String, i @pos +1, len (@String))
  
  regolare i @NextPos = i @Pos
  regolare i @pos  = il charindex (@Delimiter, @String)
 estremità
 
 ritorno
estremità
Altre soluzioni  
 
programming4us programming4us