首页 > 解决方案 > PL/SQL, Execute Immediate Troubles

问题描述

我学习 Pl/SQL 并且对 EXECUTE IMMEDIATE 有很大的问题。

我检查这个:

 CREATE TABLE x(id number(10) );

这可以正常工作。目前我想用BEGIN EXECUTE IMMEDIATE;END来做,试试:

BEGIN
 EXECUTE IMMEDIATE 'CREATE TABLE x(id number(10) );' ;
END

我有 2 条消息错误:

  1. 关于符号“;” 被替换为“文件结尾”以继续
  2. 当它应该是“;身份”时我们遇到“文件结束”符号

我应该如何正确使用 BEGIN/EXECUTE IMMEDIATE/END ?谢谢

标签: javaoracleoracle11goracle10goracle-sqldeveloper

解决方案


在动态 SQL 中,您不会终止语句 - 删除这个分号:

... number(10) );'
                ^
               this

所以:

SQL> BEGIN
  2   EXECUTE IMMEDIATE 'CREATE TABLE x(id number(10) )' ;
  3  END;
  4  /

PL/SQL procedure successfully completed.

SQL> desc x
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER(10)

SQL>

推荐阅读