使用 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 发送此代码,由于语句终止符 (;
) 错误,它不起作用。
如果我用 BEGIN
和 END
包装它以创建复合 SQL 块,它不起作用,因为 DB2 不允许复合 SQL 上的 DDL 命令块。
问题是,我需要同时执行这两个命令。有什么想法吗?
您需要使用动态 SQL 来执行一些 DDL 语句:
EXECUTE IMMEDIATE 'CREATE TABLE test AS (SELECT...'
我需要与其他 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 发送此代码,由于语句终止符 (;
) 错误,它不起作用。
如果我用 BEGIN
和 END
包装它以创建复合 SQL 块,它不起作用,因为 DB2 不允许复合 SQL 上的 DDL 命令块。
问题是,我需要同时执行这两个命令。有什么想法吗?
您需要使用动态 SQL 来执行一些 DDL 语句:
EXECUTE IMMEDIATE 'CREATE TABLE test AS (SELECT...'