代码大概是这样
begin
...
V_SQL := 'SELECT ' || V_COLNAME || ' FROM ' || V_TBNAME ||
' WHERE ' || V_COLNAME || '=''' || IN_VAR || '''';
---这里是动态SQL
..
OPEN MY_CUR FOR V_SQL;
FETCH MY_CUR BULK COLLECT
INTO MY_VARRAY;
FOR I IN MY_VARRAY.FIRST .. MY_VARRAY.LAST LOOP
INSERT INTO AAA_TEMP
(TBNAME, COLNAME, INDEXDATA, OPDATE, DATAROWID, USERS)
VALUES
(V_TBNAME, V_COLNAME, MY_VARRAY(i), sysdate, null, V_USER);
END LOOP;
end;
MY_VARRAY(i)只能取一列信息,如果我还想取ROWID,就不行了
理论想SQL这么写
V_SQL := 'SELECT ' || V_COLNAME || ',rowid FROM ' || V_TBNAME ||
' WHERE ' || V_COLNAME || '=''' || IN_VAR || '''';
。。
INSERT INTO AAA_TEMP
(TBNAME, COLNAME, INDEXDATA, OPDATE, DATAROWID, USERS)
VALUES
(V_TBNAME, V_COLNAME, MY_VARRAY(i), sysdate, MY_VARRAY(i).rowid, V_USER);
但这样不行,有什么解决办法?
------解决方案--------------------