我有一个问题如下:
表A:
prjCode prjName
p1 项目1
p2 项目2
另外有一存储过程 getPrjTask,参数为prjCode;我想获取表的所有prjCode,每个prjCode作为参数传入存储过程,
循环调用存储过程,循环调用的语句的部分,sql怎么写?
表A:
prjCode prjName
p1 项目1
p2 项目2
另外有一存储过程 getPrjTask,参数为prjCode;我想获取表的所有prjCode,每个prjCode作为参数传入存储过程,
循环调用存储过程,循环调用的语句的部分,sql怎么写?
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
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
(
prjCode varchar(100),
prjname varchar(200)
)
Go
insert into A
select 'p1','项目1'
union all
select 'p2','项目2'
GoCreate 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
declare @endIndex int
declare @isStop int
select @startIndex=1
select @endIndex=50while (@startIndex<@endIndex)
begin --这里面写那个执行的语句
select @startIndex=@startIndex+1
end
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
ENDCLOSE prjCode_cursor
DEALLOCATE prjCode_cursor