PL/SQL,执行立即麻烦

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. About symbol ";" was replaced to "end-of-file" to be continue
  2. That we meet "end-of-file" symbol when it should be "; identity"

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

在动态 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>