首页 > 解决方案 > 在存储过程中执行创建表会引发错误

问题描述

我想在我的存储过程中运行它,但它给了我错误:

BEGIN
  EXECUTE IMMEDIATE 'DROP TABLE "temp1"';
    EXCEPTION
        WHEN OTHERS THEN
        IF SQLCODE = -942 THEN      
            create table temp1(id number);            
        ELSE
      RAISE;
    END IF;
END;

我也尝试过放置 BEGIN END 块create table temp1(id number),但错误保持不变。

错误:

PLS-00103:在预期以下情况之一时遇到符号“CREATE”:

(开始 case 声明退出 goto if loop mod null pragma raise return select update while with << continue close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe purge 06550. 00000 - “line %s, column %s :\n%s" *原因:通常是 PL/SQL 编译错误。*措施:

标签: oracleplsql

解决方案


CREATE TABLE 也是 DDL 就像 DROP 所以也必须作为动态 SQL 运行:

BEGIN
  EXECUTE IMMEDIATE 'DROP TABLE "temp1"';
    EXCEPTION
        WHEN OTHERS THEN
        IF SQLCODE = -942 THEN      
            EXECUTE IMMEDIATE 'create table temp1(id number)';            
        ELSE
      RAISE;
    END IF;
END;

推荐阅读