我想在存储过程中执行一个查询,该查询应循环所有数组值。
例如:
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]
}
我想像上面那样表演。 感谢
答案 0 :(得分:7)
temporary table
中的第一个商店ID,如下所示
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')
然后你可以加入你想要获取记录的表,如下所示,
如果您的要求不是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
它会返回两条与IDs
匹配并插入的记录
#new_table
以上
select * from #new_table
OUTPUT:
col_name1 col_name2
Test1 Test2
Rest1 Rest2
Note: you can use `table variable` as well
答案 1 :(得分:2)
使用IN
子句。
您不需要循环或临时表来传递storeID
。在storeID's
子句
IN
列表
select
col_name1,col_name2
into
#temp_table -- cannot use @table here
from
Table_Name
Where
storeID in (1001,2400,2001,5000)
答案 2 :(得分:1)
Array
对象在Sql Server中不存在。
您可以创建一个临时表,如下所示
CREATE TABLE #mytemp (<list of field>)
您可以存储信息。
您可以执行JOIN操作以将其与其他表一起使用,或者如果您想创建循环,您可以定义CURSOR
来处理临时表的每一行