Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从表2中选择进入表,其中列位于(子查询)_Sql_Oracle - Fatal编程技术网

Sql 从表2中选择进入表,其中列位于(子查询)

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

我在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 '%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将需要“批量收集到”或类似方法。