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.
Author: mohamed faisal, 2017-01-16

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
 7
Author: Susang, 2017-01-16 08:39:15

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)
 2
Author: Pரதீப், 2017-01-16 09:08:36

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

 1
Author: Joe Taras, 2017-01-16 08:28:40