使用 DashDB (DB2) 在复合 SQL 中执行 DDL

Executing DDL in compound SQL using DashDB (DB2)

我需要与其他 SQL 命令一起执行 DDL 命令 (CREATE TABLE)。请参阅下面的代码片段:

CREATE TABLE test AS
(
    SELECT duration AS NUM1
    FROM event 
    WHERE duration IS NOT NULL
) WITH NO DATA;

INSERT INTO test (   
    SELECT duration AS NUM1
    FROM  event 
    WHERE event_duration_tech IS NOT NULL   
);

我正在创建一个 table,然后填充它。

如果我通过 JDBC 发送此代码,由于语句终止符 (;) 错误,它不起作用。

如果我用 BEGINEND 包装它以创建复合 SQL 块,它不起作用,因为 DB2 不允许复合 SQL 上的 DDL 命令块。

问题是,我需要同时执行这两个命令。有什么想法吗?

您需要使用动态 SQL 来执行一些 DDL 语句:

EXECUTE IMMEDIATE 'CREATE TABLE test AS (SELECT...'