Como declarar a variável Array no servidor SQL?
eu quero executar uma consulta no procedimento armazenado, que deve colocar em loop todos os valores da matriz.
por exemplo:
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]
}
Quero actuar como em cima.
Obrigado.
3 answers
Primeira identificação Da Loja em {[3] } como abaixo
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')
Depois pode juntar-se à tabela de onde deseja obter o registo como em baixo,
este método é muito melhor do que passar pelo loop
se as suas necessidades não forem more complicated
em real
select t.col_name1,
t.col_name2
INTO #new_table
from #Table_Name t
inner join #tmp_ids ti on ti.id = t.storeID
Irá devolver dois registos que são compatíveis com IDs
e inseridos no
#new_table
acima de
select * from #new_table
OUTPUT:
col_name1 col_name2
Test1 Test2
Rest1 Rest2
Note: you can use `table variable` as well
Utilizar IN
cláusula.
Você não precisa de loop ou temp table para passar {[[2]}. Aprovar a lista de storeID's
em IN
cláusula
select
col_name1,col_name2
into
#temp_table -- cannot use @table here
from
Table_Name
Where
storeID in (1001,2400,2001,5000)
Array
o objecto não está presente no servidor Sql.
Pode criar uma tabela temporária, como se segue
CREATE TABLE #mytemp (<list of field>)
Onde pode guardar as suas informações.
Pode efectuar uma operação de junção para a usar com outras tabelas ou, se quiser criar um loop, pode definir um CURSOR
para processar cada linha da sua tabela temporária