删除DB2数据库(如果存在)

时间:2015-06-09 07:42:06

标签: db2

我想编写db2命令,找出第一个数据库是否存在,如果存在该数据库,则删除该数据库并创建一个新的更新数据库。

请帮助相同

4 个答案:

答案 0 :(得分:0)

DB2中没有支持该指令的命令或语言。当给定名称作为数据库的别名(而不是数据库的真实名称)存在时,您必须定义要执行的操作,删除别名?重命名吗?

脚本如下所示:

  1. 列出数据库目录并过滤名称和别名(db2 list db directory)。可以使用Awk或Grep在Linux中使用过滤器在Windows中完成过滤。
  2. 如果存在具有该名称的数据库别名,则您决定该怎么做。
  3. 相反,如果存在具有该名称的数据库名称,则将其删除(db2 drop db xxx)
  4. 创建数据库。
  5. 如果系统中存在数据库错误(SQL1005N),则对其进行编目并删除它(db2 catalog db xxx,db2 drop db xxx)
  6. 重试数据库创建。

答案 1 :(得分:0)

在db2 LUW版本表SYSCAT.tables中的db2 for zos表SYSIBM.SYSDATABASE或SYSIBM.SYSTABLES中的第一个查询系统表。如果查询中有行,则存在数据库。

答案 2 :(得分:0)

在LUW中,您可以执行以下操作:

--#SET TERMINATOR @
BEGIN
 DECLARE TABLE_NOT_FOUND CONDITION FOR SQLSTATE '42704';
 DECLARE CONTINUE HANDLER FOR TABLE_NOT_FOUND;
 EXECUTE IMMEDIATE 'DROP TABLE myschema.mytable';
END @

您可以将此代码段转换为接收架构名称和表名称的函数。

答案 3 :(得分:-1)

如果存在,则调用此函数将允许您删除表:

CALL FNC.DROP_IF_EXISTS('TABLENAME')!