如何在SQL Server中声明Array变量?

moh*_*sal 5 sql sql-server stored-procedures

我想在存储过程中执行一个查询,它应循环所有数组值.

例如:

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]
}
Run Code Online (Sandbox Code Playgroud)

我想像上面那样表现.谢谢

Sus*_*ang 7

First Store ID temporary table如下所示

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')
Run Code Online (Sandbox Code Playgroud)

然后你可以加入你想要获取记录的表格,如下所示,这种方法比通过loop你的要求不是more complicated真实的要好得多.

select t.col_name1,
    t.col_name2
INTO #new_table
from #Table_Name t
inner join #tmp_ids ti on ti.id = t.storeID
Run Code Online (Sandbox Code Playgroud)

它将返回与上面匹配IDs并插入的 两条记录#new_table

select * from #new_table

OUTPUT:
col_name1   col_name2
Test1       Test2
Rest1       Rest2

Note: you can use `table variable` as well
Run Code Online (Sandbox Code Playgroud)


Joe*_*ras 3

ArraySql Server 中不存在对象。

可以创建一个临时表,如下

CREATE TABLE #mytemp (<list of field>)
Run Code Online (Sandbox Code Playgroud)

您可以在其中存储您的信息。

您可以执行 JOIN 操作以将其与其他表一起使用,或者如果您想创建一个循环,您可以定义一个CURSOR来处理临时表的每一行