Jak sprawdzić procedura / view / tabela istnieje, czy nie przed upuszczenie go w DB2 9.1?

głosy
1

Jak piszemy poniżej pseudo kod w DB2,

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

Jednym z rozwiązań znalazłem, po googlowania jest ignorowanie kody powrotne. Czy mamy bardziej elegancki sposób to zrobić?

Dzięki


Aktualizacja: Z pomocą odpowiedź poniżej Napisaliśmy proc poniżej spadać procedur

  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
Utwórz 10/12/2008 o 11:59
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
2

To zapytanie:

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

(Gdzie można określić nazwę schematu na zastępczy) daje wszystkie procs w schemacie. Więc Proc istnieje część jest po prostu ISTNIEJE kwerendę na tym widoku z prawidłową nazwą proc.

Odpowiedział 13/12/2008 o 14:53
źródło użytkownik

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