Sql 从表2中选择进入表,其中列位于(子查询)
我在plsql中写道:Sql 从表2中选择进入表,其中列位于(子查询),sql,oracle,Sql,Oracle,我在plsql中写道: w_table USER_TAB_COLS.TABLE_NAME%TYPE :='T481INPUTRIGADOC' ; cursor selecttable is select cols.* FROM USER_TAB_COLS cols JOIN USER_TABLES tabs ON cols.TABLE_NAME = tabs.TABLE_NAME WHERE 1=1 AND cols.COLUMN_NAME LIKE '%IDANAGPROPRIE
w_table USER_TAB_COLS.TABLE_NAME%TYPE :='T481INPUTRIGADOC' ;
cursor selecttable is
select cols.*
FROM USER_TAB_COLS cols
JOIN USER_TABLES tabs ON cols.TABLE_NAME = tabs.TABLE_NAME
WHERE 1=1
AND cols.COLUMN_NAME LIKE '%IDANAGPROPRIETARIO%' --Dovrei prenedere ogni i-esimo elemento della lista
ORDER BY cols.TABLE_NAME, cols.COLUMN_ID;
BEGIN
tmpVar := 0;
w_esitoElaborazione:='OK';
w_descrizioneErrore:='';
FOR REC IN selecttable LOOP
w_cnt_record := w_cnt_record+1;
w_table := REC.TABLE_NAME;
w_col := REC.COLUMN_NAME;
select w_col into a from w_table;
end loop
但问题出在select查询中,因为有写入输出
[错误]ORA-00942(76:30):PL/SQL:ORA-00942:表或视图不存在在形成整个quire字符串后,您已使用
EXECUTE IMMEDIATE
使SQL调用动态
FOR REC IN selecttable LOOP
w_cnt_record := w_cnt_record+1;
w_table := REC.TABLE_NAME;
w_col := REC.COLUMN_NAME;
EXECUTE IMMEDIATE 'select '||w_col||' from '||w_table INTO a;
end loop
您所连接的用户是否有权访问这些系统视图?问题不在于视图,而在于
w_table
是一个VARCHAR,而不是一个表,因此您不能像这样从中进行选择。但问题是我必须从中选择w_col的表名,包含在“用户选项卡”表(游标选择表)的“列名称”字段中。我如何进行查询?我同意OP希望执行立即执行,并且您已经解决了直接问题。对于绝大多数场景,这将抛出一个错误。对于非单记录场景,OP将需要“批量收集到”或类似方法。