找到符号“创建”而不是

发布于 2025-01-19 14:52:41 字数 413 浏览 0 评论 0原文

CREATE OR REPLACE PROCEDURE P_DUP_DEL_CREATE_TAB IS
BEGIN                                           
  CREATE OR REPLACE TABLE T_DUPLICATE_TABLE (   
  F_NUMBER NUMBER(2),
  S_NUMBER NUMBER(1),
  CONSTRAINT ID PRIMARY KEY (F_NUMBER, S_NUMBER)
  );

END P_DUP_DEL_CREATE_TAB;

我不知道为什么它给我这个错误:

错误(3,3):PLS-00103:找到符号“CREATE”而不是以下之一:(开始案例声明退出如果...

我尝试使用反斜杠,但它不能解决问题,有帮助吗?

CREATE OR REPLACE PROCEDURE P_DUP_DEL_CREATE_TAB IS
BEGIN                                           
  CREATE OR REPLACE TABLE T_DUPLICATE_TABLE (   
  F_NUMBER NUMBER(2),
  S_NUMBER NUMBER(1),
  CONSTRAINT ID PRIMARY KEY (F_NUMBER, S_NUMBER)
  );

END P_DUP_DEL_CREATE_TAB;

I don't know why it gives me this error:

Error(3,3): PLS-00103: Found the symbol "CREATE" instead of one of the following: ( begin case declare exit for goto if ...

I tried using the backslash, but it doesn't solve the problem, any help?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

别想她 2025-01-26 14:52:41

不能在 PL/SQL 中使用 DDL 语句。您需要使用EXECUTE IMMEDIATE并且不能使用CREATE OR REPLACE

CREATE OR REPLACE PROCEDURE P_DUP_DEL_CREATE_TAB
IS
  TABLE_DOES_NOT_EXIST EXCEPTION;
  PRAGMA EXCEPTION_INIT(TABLE_DOES_NOT_EXIST, -942);
BEGIN
  EXECUTE IMMEDIATE 'TRUNCATE TABLE T_DUPLICATE_TABLE';
EXCEPTION
  WHEN TABLE_DOES_NOT_EXIST THEN
    EXECUTE IMMEDIATE 'CREATE TABLE T_DUPLICATE_TABLE (   
      F_NUMBER NUMBER(2),
      S_NUMBER NUMBER(1),
      CONSTRAINT ID PRIMARY KEY (F_NUMBER, S_NUMBER)
    )';
END P_DUP_DEL_CREATE_TAB;
/

db<>fiddle 这里

You cannot use DDL statements in PL/SQL. You need to use EXECUTE IMMEDIATE and cannot use CREATE OR REPLACE:

CREATE OR REPLACE PROCEDURE P_DUP_DEL_CREATE_TAB
IS
  TABLE_DOES_NOT_EXIST EXCEPTION;
  PRAGMA EXCEPTION_INIT(TABLE_DOES_NOT_EXIST, -942);
BEGIN
  EXECUTE IMMEDIATE 'TRUNCATE TABLE T_DUPLICATE_TABLE';
EXCEPTION
  WHEN TABLE_DOES_NOT_EXIST THEN
    EXECUTE IMMEDIATE 'CREATE TABLE T_DUPLICATE_TABLE (   
      F_NUMBER NUMBER(2),
      S_NUMBER NUMBER(1),
      CONSTRAINT ID PRIMARY KEY (F_NUMBER, S_NUMBER)
    )';
END P_DUP_DEL_CREATE_TAB;
/

db<>fiddle here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文