【发布时间】:2017-12-14 09:08:32
【问题描述】:
考虑以下程序。对于处理,它无论如何都必须经过所有处理阶段。所以我的问题是:在这个解析阶段'Select job_id from asfd' 是否仍然被视为字符串,而EXECUTE IMMEDIATE 的执行阶段语句'Select job_id from asfd' 现在再次被解析为SQL 语句?
CREATE OR REPLACE PROCEDURE test_ei
IS
BEGIN
EXECUTE IMMEDIATE ‘select job_id from asfd’; //line 3
END;
我在here 中找到的一个解释是asdf 表不存在但gut 已成功编译,因此'Select job_id from asfd' 在此阶段仍被视为字符串。请大家指正。
事实上,即使 EXECUTE IMMEDIATE 'select * asfd'; 在第 3 行被替换,它仍然可以成功。所以我猜上面的解释是正确的。
【问题讨论】:
-
一些关于不同阶段的有用信息:[link]docs.oracle.com/cd/A57673_01/DOC/server/doc/A48506/sqlconce.htm
-
是的,在程序解析时,'select job_id from asfd'没有被解析,它只在运行时被解析。
标签: oracle parsing plsql dynamic-sql