PL / SQL Oracle ROWTYPE像数组一样访问

时间:2015-11-04 13:59:32

标签: oracle plsql rowtype

我有一些PL / SQL代码:

DECLARE
  CURSOR c_data IS
    SELECT *
    FROM table;
    TYPE bulk_collect IS TABLE OF c_data%ROWTYPE INDEX BY PLS_INTEGER;
    l_tab bulk_collect;
BEGIN
  OPEN c_data;
  LOOP
    FETCH c_data
    BULK COLLECT INTO l_tab LIMIT 1000;
    EXIT WHEN l_tab.count = 0;

    -- Process contents of collection here.
    --Insert into tt_kust values l_tab;
      FOR indx IN 1 .. l_tab.COUNT 
          LOOP
              DBMS_OUTPUT.PUT_LINE(l_tab(indx).col_name);
          END LOOP;
      END LOOP;
  CLOSE c_data;
END;

这很好用! 但是当我尝试像这样访问'l_tab'的列时:

FOR indx IN 1 .. l_tab.COUNT 
    LOOP
         DBMS_OUTPUT.PUT_LINE(l_tab(indx)['col_name']);
    END LOOP;

它不起作用!有没有办法像没有'dot'符号的数组一样访问'l_tab'? 我想这样做是因为我想将这个pl / sql代码用于多个表,所以它必须是动态的。 所以后来在FOR LOOP中我想做这样的事情:

FOR indx IN 1 .. l_tab.COUNT 
        LOOP
             upt_stmt := 'update table set colname= :col1, colname=:col2, ...
               where pkcolname = :pkcolname ;
         execute immediate upt_stmt using l_tab(indx)['col_name'],l_tab(indx)['col_name2'], ....;
        END LOOP;

0 个答案:

没有答案