SQLServer中不能实现像你这样子的:
type cur_t is ref cursor;
  c_FACT_PATI cur_t;v_strsql:=‘sql语句’
open c_FACT_PATI for v_strsql;可以借助临时表来实现要求的功能.

解决方案 »

  1.   

    --示例CREATE TRIGGER TRI_useCursor
    ON dbo.TableX
    AFTER UPDATE
    AS
    DECLARE MyCursor CURSOR
    LOCAL SCROLL 
    FOR SELECT item,value FROM TableXOPEN MyCursor
    DECLARE @list varchar(200),@item varchar(10),@value numeric(10,2)FETCH NEXT FROM MyCursor
    INTO @item,@valueSET @list=''
    WHILE (@@FETCH_STATUS = 0)
    BEGIN
    SET @list=@list+@item+','+convert(varchar,@value)+',      ' 
    FETCH NEXT FROM MyCursor
    INTO @item,@value
    PRINT @list
    ENDCLOSE MyCursor
    DEALLOCATE MyCursor

    GO
      

  2.   

    --可以这样子处理
    CREATE TABLE #tabTmp(id int)
    INSERT #tabTmp EXECUTE('SELECT id FROM '+@TableName)declare curOne cursor for 
    SELECT id FROM #tabTmp
    open curOne
    FETCH NEXT from curOne into  @ID
      

  3.   

    exec('
    declare tb cursor global
    for
    sql语句'
    open tb 
    fetch tb
    ...
      

  4.   

    定义一个全局游标,可以在exec语句执行完之后再外部引用游标。