it-swarm.com.de

Wie deklariere ich eine Array-Variable in SQL Server?

Ich möchte eine Abfrage in gespeicherter Prozedur ausführen, die alle Werte des Arrays durchlaufen sollte. 

Zum Beispiel:

declare arrayStoreID={1001,2400,2001,5000}

for(int i=0;i<arrayStoreID.length;i++)
{
    select 
        col_name1,col_name2
    into
        @temp_table
    from
        Table_Name
    Where 
        storeID=arrayStoreID[i]
}

Ich möchte wie oben auftreten. Vielen Dank

5
mohamed faisal

Speichern Sie die IDs zuerst in temporary table ab

create table #Table_Name(storeID INT, col_name1 varchar(50), col_name2 varchar(50))
insert into #Table_Name values
(1001, 'Test1', 'Test2'),
(5000, 'Rest1', 'Rest2'),
(1122, 'Best1', 'Best2')

Dann können Sie sich mit der Tabelle verbinden, von der Sie den Datensatz wie folgt abrufen möchten: Diese Methode ist viel besser als die loop, wenn Ihre Anforderung nicht more complicated in real ist

select t.col_name1,
    t.col_name2
INTO #new_table
from #Table_Name t
inner join #tmp_ids ti on ti.id = t.storeID

Es werden die beiden Datensätze zurückgegeben, die mit IDs übereinstimmen und in die .__ eingefügt werden. #new_table oben

select * from #new_table

OUTPUT:
col_name1   col_name2
Test1       Test2
Rest1       Rest2

Note: you can use `table variable` as well
7
Susang

verwenden Sie IN-Klausel. 

Sie benötigen keine Schleife oder temporäre Tabelle, um storeID zu übergeben. Übergeben Sie die Liste von storeID's in der Klausel IN

 select 
        col_name1,col_name2
    into
        #temp_table -- cannot use @table here
    from
        Table_Name
    Where 
        storeID in (1001,2400,2001,5000)
2

Array Objekt ist nicht in SQL Server vorhanden.

Sie können wie folgt eine temporäre Tabelle erstellen

CREATE TABLE #mytemp (<list of field>)

wo Sie Ihre Informationen speichern können.

Sie können eine JOIN-Operation ausführen, um diese mit anderen Tabellen zu verwenden. Wenn Sie eine Schleife erstellen möchten, können Sie eine CURSOR definieren, um jede Zeile Ihrer temporären Tabelle zu verarbeiten

1
Joe Taras