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

голоса
1

Как мы пишем ниже псевдокода в 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
Задан 10/12/2008 в 11:59
источник пользователем
На других языках...                            


1 ответов

голоса
2

этот запрос:

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

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

Ответил 13/12/2008 в 14:53
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more