Как проверить, существует ли процедура / представление / таблица перед тем, как бросить ее в db2 9.1?

Как мы пишем ниже псевдокод в db2,

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

Одно решение, которое я нашел после поиска в Google, - игнорировать коды возврата. У нас есть более элегантный способ сделать это?

Спасибо


Обновление: с помощью ответа ниже мы написали процедуру как ниже, чтобы отбросить процедуры

  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
10.12.2008 10:59:28
1 ОТВЕТ
РЕШЕНИЕ

этот запрос:

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

(где вы указываете имя своей схемы в заполнителе) дает вам все процессы в схеме. Таким образом, часть Proc существующие - это просто запрос EXISTS для этого представления с правильным именем proc.

2
4.03.2016 19:15:07