database - 在 db2 9.1 中删除过程/ View /表之前如何检查它是否存在?

标签 database db2

我们如何在 db2 中编写下面的伪代码,

If (Proc exists)
  Drop Proc
  Create Proc
Else
 Create Proc

我在谷歌搜索后发现的一个解决方案是忽略返回码。我们有更优雅的方式来做到这一点吗?

谢谢


更新:在下面的答案的帮助下,我们写了一个如下的过程来删除程序

  CREATE PROCEDURE SVCASNDB.DROPSP(IN P_SPECIFICNAME VARCHAR(128))
        SPECIFIC DROPSP

        P1: BEGIN


        -- Drop the SP if it already exists
        if exists (SELECT SPECIFICNAME FROM SYSIBM.SYSROUTINES WHERE SPECIFICNAME = trim(upper(p_SpecificName))) then
            begin
                DECLARE v_StmtString VARCHAR (1024);
                SET v_StmtString = 'DROP SPECIFIC PROCEDURE SCHEMA.' || p_SpecificName;
                PREPARE stmt1 FROM v_StmtString ;
                EXECUTE stmt1;
            end;
        end if;

    END P1

最佳答案

这个查询:

SELECT DISTINCT ROUTINENAME, RESULT_SETS, REMARKS 
FROM SYSIBM.SYSROUTINES 
WHERE ROUTINESCHEMA='<schema>' AND FUNCTION_TYPE NOT IN ('S', 'T')

(您在占位符处指定架构名称的位置) 为您提供架构中的所有过程。所以 Proc exists 部分只是该 View 上的 EXISTS 查询,具有正确的 proc 名称。

关于database - 在 db2 9.1 中删除过程/ View /表之前如何检查它是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/355687/

相关文章:

sql - 通过 Oracle 的解释计划查询的总成本

c# - 在 C# 程序中替代数据库的好选择

mysql - 如何加入我的结果集和第三个表?

db2 - 从命令行执行 DB2 命令到远程服务器

sql - 存储过程在插入后返回主键?

php - 如何将json数据保存到mysql?

c++ - 用于从脚本中读取任意类型变量的单一数据结构,用于在运行时检索和编辑

java - 从 DB2 中的表获取值

sql - SQL中的集合和库有区别吗?

mysql - 使用 Xampp 同步本地安装的 2 个数据库