先建立了一张临时表,然后想建个游标循环查询这张临时表,该怎么做?CREATE GLOBAL TEMPORARY TABLE  t (
        ID NUMBER NOT NULL,
        RP_ID number,
        RP_CODE varchar2(50),
        CUS_ID number,
        CP_ID number,
        PROD_ID number
)
ON COMMIT delete ROWS ;
 DECLARE 
  CURSOR lv_Cursor IS SELECT  RP_ID,RP_CODE,CUS_ID,CP_ID,PROD_ID From t Order by RP_ID 现在的问题是:提示找不到t

解决方案 »

  1.   

    不清楚你到底想问什么?你直接select * from t 可以吗?
      

  2.   

    to xuejinlong:不能直接select,因为我这里需要完成的从临时表中循环取出数据,插入到另外一张表中。
      

  3.   

    声明变量mvar1, mvar2..........
    cursor mycur(var1 number, var2 varchar2........) is select *from linshitable;open mycur;fetch mycur into mvar1, mvar2.........;insert into targettable(var.......) values(mvar1, mvar2,......);close mycur;这样行吗?
      

  4.   

    使用
    for rs in (select * from t)
    loop
      rs.col ....
    end loop就可以了, 这就是游标了.你要的动态游标是什么?
      

  5.   

    to asusa3a(金为床兮银为椅) :不行的,这是一般的游标,我要的是动态的,就是在动态sql中进行声明的游标:
    strsql := 'DECLARE 
      CURSOR lv_Cursor IS SELECT  RP_ID,RP_CODE,CUS_ID,CP_ID,PROD_ID From t Order by RP_ID ',但这样好像不行。
      

  6.   

    建立过程包
    在包中声明游标
    CREATE OR REPLACE PACKAGE pck_query
    AS
       TYPE type_cur IS REF CURSOR;  
       Procedure test
       ;
    END pck_query;
    /
    CREATE OR REPLACE PACKAGE BODY pck_query
    AS
       Procedure test
    as
    v_cur type_cur;
    Begin 
    ---建立临时表
    commit;Open v_cur For
    ......
    Close v_cur;
    end;end ;
      

  7.   

    FOR 游标 IN 游标变量 LOOP
       IF 条件判断 THEN 
           vSQl:=SQL;
           EXECUTE IMMEDIATE vSQl;
       END IF ;
    END LOOP;