PLSQL Oracle 命令不允许在同一命令中出现多个异常

我将以下脚本存储在 C#OracleCommand中。当我执行它时,我得到


“在预期以下情况之一时遇到符号“/”:“错误。


我正在尝试大量创建大量表,同时检查它们是否首先存在,如果存在则删除。


BEGIN

EXECUTE IMMEDIATE 'DROP TABLE allexact';

EXCEPTION

WHEN OTHERS THEN NULL;

EXECUTE IMMEDIATE '

CREATE TABLE allexact

(

t_long long NULL,

t_binFloat binary_float NULL,

t_binDbl binary_double NULL,

t_rowid rowid NULL,

t_date date NULL,

t_blob BLOB NULL,

t_CLOB CLOB NULL,

t_NCLOB NCLOB NULL

)';

END;//

BEGIN

EXECUTE IMMEDIATE 'DROP TABLE chr_1';

EXCEPTION

WHEN OTHERS THEN NULL;

EXECUTE IMMEDIATE '

CREATE TABLE chr_1

(

chr_1 char(1) NULL,

chr_2 char(2) NULL,

chr_3 char(3) NULL,

chr_4 char(4) NULL,

...

chr_60 char(60) NULL

)';

END;//

此命令在 plsql 开发人员中运行良好,但在 C# 中作为命令执行时则不行。如果我在所有代码的底部只有 1 个异常,它可以正常工作,但是一旦遇到异常,那么(如预期的那样)其余代码将被跳过。如何将多个异常语句放入存储在 C# OracleCommand 变量中的 plsql 命令中?


Smart猫小萌
浏览 135回答 1
1回答

临摹微笑

使用OracleCommand,您只能执行 1 个 SQL 语句或 1 个存储过程或 1 个匿名块(您的情况)。但是你通过了 2 个匿名块。因此错误。尝试将所有内容打包到 1 个块中begin   begin      EXECUTE IMMEDIATE . . .      EXECUTE IMMEDIATE . . .    exception when   end;   begin     EXECUTE IMMEDIATE . . .      EXECUTE IMMEDIATE . . .    exception when   end;end;
打开App,查看更多内容
随时随地看视频慕课网APP