gpt4 book ai didi

sql - 如果不存在则创建表语法 db2

转载 作者:搜寻专家 更新时间:2023-10-30 21:38:07 24 4
gpt4 key购买 nike

我想编写一个 SQL 脚本,在创建表/序列之前检查表/序列是否存在。

我尝试了 Google 并找到了一些适用于其他人但不适用于我的解决方案:

方法一:

SELECT *
FROM tableA
WHERE EXISTS
(SELECT * from tableB);

这与 select 语句一起使用。然后我尝试使用创建表语句:

CREATE TABLE "SMEADM"."JXTEST"  (
"ACCOUNTSENTRYID" BIGINT NOT NULL )
IN "DATATBSP"
WHERE EXISTS
(SELECT * from tableB);

这会遇到错误 42601

方法二:

CREATE TABLE IF NOT EXISTS "SMEADM"."JXTEST"  (
"ACCOUNTSENTRYID" BIGINT NOT NULL )
IN "DATATBSP" ;

这也让我遇到错误 42601

方法三:

begin
declare continue handler for sqlstate '42710' begin end;
execute immediate 'CREATE TABLE "SMEADM"."JXTEST" (
"ACCOUNTSENTRYID" BIGINT NOT NULL )
IN "DATATBSP"';
end

这也让我遇到错误 42601

请指教。

最佳答案

正确的方法是你的第三个选项,但是你必须正确地写它。如果您阅读输出消息,就会发现存在无效字符(42601 SQL 状态)。这是由于没有结束字符的字符串。您不能拥有多行字符串,而必须创建多行并将它们连接起来。

当我运行时:

begin
declare continue handler for sqlstate '42710' begin end;
execute immediate 'CREATE TABLE "SMEADM"."JXTEST" ('
|| ' "ACCOUNTSENTRYID" BIGINT NOT NULL ) '
|| 'IN "DATATBSP"';
end

我得到了:

begin
declare continue handler for sqlstate '42710' begin end;
execute immediate 'CREATE TABLE "SMEADM"."JXTEST" ('
db2 (cont.) => db2 (cont.) => db2 (cont.) => || ' "ACCOUNTSENTRYID" BIGINT NOT NULL ) ' ;
db2 (cont.) => end@
DB20000I The SQL command completed successfully.

关于sql - 如果不存在则创建表语法 db2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31804758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com