Как проверить, существует ли процедура / представление / таблица перед тем, как бросить ее в db2 9.1? - PullRequest
1 голос
/ 10 декабря 2008

Как написать ниже псевдокод в 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

1 Ответ

2 голосов
/ 13 декабря 2008

этот запрос:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...