【发布时间】:2015-07-11 00:17:58
【问题描述】:
我一直在研究一些 PL/SQL(在 Oracle SQL Developer 中),并且看到了几种不同格式的 SQL 被调用。
为了当前和未来代码的一致性和速度,我想知道哪个是首选。
我见过的有四种。
1) 普通 DDL:
CREATE TABLE newtable AS SELECT * FROM pSource;
2) 立即执行(本机动态 SQL):
statement := 'CREATE TABLE newtable AS SELECT * FROM ' || pSource;
EXECUTE IMMEDIATE statement;
3) EXEC_SQL:
EXEC_SQL('CREATE TABLE newtable AS SELECT * FROM ' || pSource);
4) DBMS_SQL:
cursor := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(cursor, 'CREATE TABLE newtable AS SELECT * FROM ' || pSource, DBMS_SQL.NATIVE);
numRows := DBMS_SQL.EXECUTE(cursor);
这些不同的调用方式之间有什么特别的优点/缺点/限制吗?
【问题讨论】:
标签: oracle plsql oracle-sqldeveloper execute-immediate