我有一个问题如下:
表A:
prjCode   prjName
 p1        项目1
 p2        项目2
另外有一存储过程 getPrjTask,参数为prjCode;我想获取表的所有prjCode,每个prjCode作为参数传入存储过程,
循环调用存储过程,循环调用的语句的部分,sql怎么写?

解决方案 »

  1.   

    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
      

  2.   

    刚才表名忘记改了,看明白就行
    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
      

  3.   

    Create table A
    (
    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
      

  4.   

    declare @startIndex int
    declare @endIndex int
    declare @isStop int
    select @startIndex=1
    select @endIndex=50while (@startIndex<@endIndex)
    begin --这里面写那个执行的语句
    select @startIndex=@startIndex+1
    end
      

  5.   

    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  
    ENDCLOSE prjCode_cursor
    DEALLOCATE prjCode_cursor