比如我有列名 B1,B2,B3,B4,B5
游标 b_cur;
我想用一个循环取列值
for ( i = 1 to 5)
  b_cur.B+i大致是这个意思,我的语法可能不对,可以实现?

解决方案 »

  1.   

    下面例子中,L可以作为你循环的变量,给你参考一下
    -----------------
    DECLARE
    ci     NUMBER;
    j      NUMBER;--
    lc_sql VARCHAR2(300);
    k      NUMBER;
    L      NUMBER;
    BEGIN
    /*     FOR cur IN (SELECT * FROM dual) LOOP
         
             DBMS_OUTPUT.put_line(cur.dummy);
         
         END LOOP;*/
         lc_sql := 'select 1,2,3,4,5 from dual ';
         ci:=dbms_sql.open_cursor;
         dbms_sql.parse(ci,lc_sql,dbms_sql.v7);
         dbms_sql.define_column(ci,L,j);
         k := dbms_sql.execute(ci);
         If dbms_sql.fetch_rows(ci) > 0 then 
              
              dbms_sql.COLUMN_VALUE(ci,L,j );
         END IF;     
         --dbms_sql.define_column(ci,1,j);
         
         
         DBMS_OUTPUT.put_line(j);
         
         dbms_sql.close_cursor(ci);
    EXCEPTION WHEN OTHERS THEN 
         IF dbms_sql.is_open(ci) THEN 
            dbms_sql.close_cursor(ci);
         END IF;
         DBMS_OUTPUT.put_line(SQLERRM||SQLCODE);
    END;