Como verificar um procedimento / view / tabela existe ou não antes de deixá-la cair no DB2 9.1?

votos
1

Como é que vamos escrever o código abaixo pseudo no DB2,

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

Uma solução que eu encontrei, depois de pesquisar é ignorar os códigos de retorno. Será que temos uma maneira mais elegante de fazer isso?

obrigado


Update: Com a ajuda da resposta abaixo que escreveu um proc como abaixo para soltar os procedimentos

  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
Publicado 10/12/2008 em 11:59
fonte usuário
Em outras línguas...                            


1 respostas

votos
2

esta consulta:

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

(Onde você especificar o seu nome de esquema no espaço reservado) dá-lhe todos os procs em um esquema. Assim, a Proc existe parte é simplesmente uma EXISTE consulta sobre esse ponto de vista com o nome proc adequada.

Respondeu 13/12/2008 em 14:53
fonte usuário

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