我正在学习 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 条消息错误:
<块引用>我应该如何正确地使用 BEGIN/EXECUTE IMMEDIATE/END 执行此操作?谢谢
答案 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>