Je veux exécuter une requête dans la procédure stockée, qui devrait boucler toutes les valeurs du tableau.
Par exemple:
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]
}
Je veux jouer comme ci-dessus. Merci
Premiers ID de magasin dans temporary table
comme ci-dessous
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')
Ensuite, vous pouvez rejoindre la table à partir de laquelle vous voulez récupérer l’enregistrement comme ci-dessous, cette méthode est bien meilleure que de passer par la variable loop
si votre exigence n'est pas more complicated
en réel
select t.col_name1,
t.col_name2
INTO #new_table
from #Table_Name t
inner join #tmp_ids ti on ti.id = t.storeID
Il renverra les deux enregistrements qui correspondent à IDs
et qui sont insérés dans le fichier #new_table
ci-dessus
select * from #new_table
OUTPUT:
col_name1 col_name2
Test1 Test2
Rest1 Rest2
Note: you can use `table variable` as well
utiliser la clause IN
.
Vous n'avez pas besoin de table de boucle ou temporaire pour transmettre storeID
. Passer la liste de storeID's
dans la clause IN
select
col_name1,col_name2
into
#temp_table -- cannot use @table here
from
Table_Name
Where
storeID in (1001,2400,2001,5000)
L'objet Array
n'est pas présent dans Sql Server.
Vous pouvez créer une table temporaire, comme suit
CREATE TABLE #mytemp (<list of field>)
où vous pouvez stocker vos informations.
Vous pouvez effectuer une opération JOIN afin de l'utiliser avec d'autres tables ou, si vous souhaitez créer une boucle, vous pouvez définir un CURSOR
pour traiter chaque ligne de votre table temporaire.