怎样判断游标状态在第一行?CREATE PROCEDURE CREAaaa ()
AS
declare   @SQL   nvarchar(8000) ,@CanSu varchar(20), @Zhi varchar(20),if exists(select 1 from sysobjects where name='''aaa''' and xtype='FN' and status>0) drop function aaa
set @SQL=   'CREATE   function   dbo.aaa(@st   varchar(15))   returns   varchar(12)   as"       
 
declare   cursor1   cursor   for   select   参数,值   from  参数表 
open   cursor1 
fetch   cursor1   into   @CanSu, @Zhi
while(@@fetch_status   =   0) 
begin    IF 游标第一行     ----------------------------------------------------------------这里该怎么改?
    set   @sql=@sql + 'if @st= ' + @CanSu + 'set  @p=''' + @Zhi 
   ELSE
    set   @sql=@sql + 'elseif @st= ' + @CanSu + 'set  @p=''' + @Zhi 
FETCH NEXT FROM cursor1 INTO  @CanSu, @Zhi
endCLOSE cursor1 
DEALLOCATE cursor1  
           
SET   @SQL=@sql   +   'else     set       @p='x'   return   @p   '                                       
EXEC   (@SQL)        RETURN
GO

解决方案 »

  1.   

    open       cursor1  
    fetch       cursor1       into       @CanSu,   @Zhi
    declare @i int
    set @i=1
    while(@@fetch_status       =       0)  
    begin        IF   @i=1
    begin
            set       @sql=@sql   +   'if   @st=   '   +   @CanSu   +   'set     @p='''   +   @Zhi  
    set @i=@i+1
    end
          ELSE
    begin
            set       @sql=@sql   +   'elseif   @st=   '   +   @CanSu   +   'set     @p='''   +   @Zhi 
    end 
    FETCH   NEXT   FROM   cursor1   INTO     @CanSu,   @Zhi
    endCLOSE   cursor1  
    DEALLOCATE   cursor1