如何将SQL查询出来的一列数据赋值,执行存储过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将SQL查询出来的一列数据赋值,执行存储过程相关的知识,希望对你有一定的参考价值。

select id from data , select语句搜索出来了一列数据如有100条数据,然后再将这列数据执行存储过程:exec Procedures @id='' 这里的id数据是上一句SQL执行出来的100条数据,该如何将数据赋值给@id然后执行出数据?求大神解救!

参考技术A CREATE TABLE #Rtb_temp(
rid int not null identity(1,1),
id VARCHAR(50)
)
declare @id VARCHAR(5000),
@CP int=0,
@maxCP int=0,
@sql nvarchar(max)=''
insert into #Rtb_temp select id from tb
select @maxCP=MAX(rid) from #Rtb_temp
DECLARE MS CURSOR FOR
SELECT rid,id FROM #Rtb_temp
OPEN MS
FETCH NEXT FROM MS INTO @CP,@id
WHILE @@fetch_status=0
BEGIN
IF @CP <@maxCP
BEGIN
SELECT @sql=@sql+@id+','
END else
begin
select @sql=@sql+@id
end
FETCH NEXT FROM MS INTo @CP,@id
END
CLOSE MS
DEALLOCATE MS
exec Procedures @id=@sql
这样写会好点,可以把所有数据显示在一张表里面 。看是否OK、本回答被提问者和网友采纳
参考技术B 存储过程不能批量执行,只能用游标一个一个读取你查询出来的id然后执行存储过程追问

这个我也知道,问题是怎么写?

追答

呵呵,知道就该问怎么写游标喽
declare @id int
declare cursor1 cursor for
select id from tb
open cursor1
fetch next from cursor1 into @id
while @@fetch_status=0
begin
exec Procedures @id
fetch next from cursor1 into @id
end
close cursor1
deallocate cursor1

追问

不行,得出的结果不对。

追答

什么结果不对?

存储过程给变量赋值

在存储过程中,怎么使用select给变量赋值啊?下面是我的存储过程,望高人指点,sqlserver2000的

CREATE PROCEDURE dbo.insertinto
@tablename1 varchar(200),
@tablename2 varchar(200),
@starttime varchar(200),
@endtime varchar(200),
@siteid varchar(200)

AS
declare @sql Varchar(4000),@sql1 varchar(4000),@stime varchar(200) ,
@etime varchar(200) ,@sql2 varchar(3000)--,@sql4 varchar(2000)
set @sql2 = N' delete from '+@tablename1+' where p004 between '''+@starttime+''' and ''' + @endtime +''''
exec(@sql2)
set @sql = N'insert into '+@tablename1+' select * from ' + @tablename2 +' where p004 between '''+@starttime+''' and ''' + @endtime +''''
exec(@sql)
set @sql1 = N'select '+ @stime +'= min(p004) ,'+ @etime+' = max(p004) from '+@tablename1
exec(@sql1)
update sitelist set starttime =@stime ,endtime = @etime where siteid = @siteid
GO
在我的存储过程上能给指出错误或者帮忙修改一下吗?改好追加20分,辛苦了!

参考技术A select @siteid=id from table
或者直接
select @siteid=23
set @siteid=23
都可以

以上是关于如何将SQL查询出来的一列数据赋值,执行存储过程的主要内容,如果未能解决你的问题,请参考以下文章

c#如何查询数据库中表的一列数据并赋值给一个数组

mysql 中如何把查询出来的一列数据当成条件(字段)来使用?

如何用SQL代码将动态查询结果赋值给变量?

c#将数据库查询结果赋值到变量中

存储过程给变量赋值

怎样将数组作为Sql中IN的查询条件