查询出来的数据,作为参数循环传入存储过程调用,sql怎么写??

rickey_f 2010-12-27 01:50:40
我有一个问题如下:
表A:
prjCode prjName
p1 项目1
p2 项目2


另外有一存储过程 getPrjTask,参数为prjCode;

我想获取表的所有prjCode,每个prjCode作为参数传入存储过程,
循环调用存储过程,

循环调用的语句的部分,sql怎么写?



...全文
687 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Shawn 2010-12-28
  • 打赏
  • 举报
回复
DECLARE @prjCode VARCHAR(100)

DECLARE prjCode_cursor CURSOR LOCAL FORWARD_ONLY READ_ONLY STATIC
FOR
SELECT prjCode FROM [A]

OPEN prjCode_cursor
FETCH NEXT FROM prjCode_cursor INTO @prjCode

WHILE @@FETCH_STATUS = 0
BEGIN
EXEC getPrjTask @prjCode
FETCH NEXT FROM prjCode_cursor INTO @prjCode
END

CLOSE prjCode_cursor
DEALLOCATE prjCode_cursor
幸运的意外 2010-12-28
  • 打赏
  • 举报
回复
哎,这个语句的效率那可是一个字慢。
jcx396158820 2010-12-28
  • 打赏
  • 举报
回复
用游标循环传参
youzhj 2010-12-27
  • 打赏
  • 举报
回复
非要用循环么
jackliwei 2010-12-27
  • 打赏
  • 举报
回复
declare @startIndex int
declare @endIndex int
declare @isStop int


select @startIndex=1
select @endIndex=50

while (@startIndex<@endIndex)
begin

--这里面写那个执行的语句
select @startIndex=@startIndex+1
end
So_CooL 2010-12-27
  • 打赏
  • 举报
回复
Create table A
(
prjCode varchar(100),
prjname varchar(200)
)
Go
insert into A
select 'p1','项目1'
union all
select 'p2','项目2'
Go

Create table B
(
prjcode varchar(100)
)
exec getPrjTask
alter procedure getPrjTask
As
Begin
Declare @cursorValue varchar(100)
declare mycursor cursor for
select distinct prjCode from a
open mycursor
fetch next from mycursor into @cursorValue
while @@FETCH_STATUS = 0
Begin
insert into b
select @cursorValue
fetch next from mycursor into @cursorValue
End
close mycursor
deallocate mycursor
End
anlianganl 2010-12-27
  • 打赏
  • 举报
回复
用游标被。
jxmlearner 2010-12-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 cyhcyhhychyc 的回复:]
刚才表名忘记改了,看明白就行
declare @prjCode Nvarchar(50)
DECLARE cursor1 CURSOR FOR
SELECT prjCode FROM 表A
--打开游标
OPEN cursor1
--获取数据,游标下移一行
FETCH NEXT FROM cursor1 INTO @prjCode
--检测获取数据是否成功
WHILE @……
[/Quote]
up!
cyhcyhhychyc 2010-12-27
  • 打赏
  • 举报
回复
刚才表名忘记改了,看明白就行
declare @prjCode Nvarchar(50)
DECLARE cursor1 CURSOR FOR
SELECT prjCode FROM 表A
--打开游标
OPEN cursor1
--获取数据,游标下移一行
FETCH NEXT FROM cursor1 INTO @prjCode
--检测获取数据是否成功
WHILE @@fetch_status=0
BEGIN
--显示通过游标赋值的变量
exec getPrjTask @prjCode --执行
--游标继续下移
FETCH NEXT FROM cursor1 INTO @prjCode
END
--关闭游标
CLOSE cursor1
东那个升 2010-12-27
  • 打赏
  • 举报
回复
游标啊
cyhcyhhychyc 2010-12-27
  • 打赏
  • 举报
回复
declare @prjCode Nvarchar(50)
DECLARE cursor1 CURSOR FOR
SELECT u_id FROM suser
--打开游标
OPEN cursor1
--获取数据,游标下移一行
FETCH NEXT FROM cursor1 INTO @prjCode
--检测获取数据是否成功
WHILE @@fetch_status=0
BEGIN
--显示通过游标赋值的变量
exec getPrjTask @prjCode --执行
--游标继续下移
FETCH NEXT FROM cursor1 INTO @prjCode
END
--关闭游标
CLOSE cursor1
wyx100 2010-12-27
  • 打赏
  • 举报
回复
值p1过去了得到什么样的值
快溜 2010-12-27
  • 打赏
  • 举报
回复
用游标循环传参。
oO寒枫Oo 2010-12-27
  • 打赏
  • 举报
回复
值p1过去了得到什么样的值
华夏小卒 2010-12-27
  • 打赏
  • 举报
回复
可以把具体的思路说出来。或许可以改善。

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧