Vis*_*ath 0 oracle plsql oracle-sqldeveloper oracle12c
我只需要在PL/SQL代码中运行一个基本的SELECT查询.以下代码完美无缺:
BEGIN
EXECUTE IMMEDIATE 'SELECT * FROM ' || 'TNAME';
END;
/
Run Code Online (Sandbox Code Playgroud)
但是遵循代码
BEGIN
EXECUTE IMMEDIATE 'SELECT * FROM :1' USING 'TNAME';
END;
/
Run Code Online (Sandbox Code Playgroud)
提出错误说
ORA-00903:表名无效
ORA-06512:第2行
*原因:
*行动:
我不能以任何方式使用"USING"传递表名吗?
正如Oracle文档所述:
"您只能在可以在SQL语句中替换变量的位置使用占位符,例如WHERE子句中的条件测试.您不能使用占位符作为模式对象的名称.正确的方法,请参阅"将模式对象名称作为参数传递."