PL/SQL,立即执行问题

时间:2021-01-10 16:49:59

标签: java oracle oracle11g oracle10g oracle-sqldeveloper

我正在学习 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 执行此操作?谢谢

1 个答案:

答案 0 :(得分:2)

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