Acesso a constantes declaradas na specification de uma pack

Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #74552
    Avatar de rosacbmrosacbm
    Participante

    Ol?.
    Tenho uma package cuja especifica??o tem declara??o de v?rias constantes utilizadas pelo sistema em outras rotinas. Exemplo de declara??o: CONSTANT_VALUE_COD_ESTAGIARIO CONSTANT VARCHAR2(3) := ‘E’;
    Precisei incluir uma nova constante nesse package e ao recompilar a specification n?o consigo mais acessar o valor das constantes em outras rotinas. Todo procedimento que utiliza a CONSTANT_VALUE_COD_ESTAGIARIO, por exemplo, est? tendo como retorno nulo e n?o ‘E’, que ? o valor que est? na declara??o da constante.
    Algu?m tem id?ia do que pode estar acontecendo?
    J? exclui e recriei, recompilei, criei sin?nimo, dei grant! Nada resolve!!!

    #74553
    Avatar de Marcio68AlmeidaMarcio68Almeida
    Participante

    Essa vari?vel devia estar definida como GLOBAL, e quando voc? alterou colocou-a como PRIVATE…
    N?o tem a Package original ???

    #74554
    Avatar de rosacbmrosacbm
    Participante

    Marcio,

    N?o s?o vari?veis, s?o constantes. N?o coloquei private em sua declara??o. Veja como est? o specification da pack:

    — Pacote com funcoes genericas e constantes

    — utilizadas por outras rotinas do sistema

    CREATE OR REPLACE PACKAGE SYSSLV.PACK_SLV0001 AS

    — Declaracao de constantes
    — Devem ter o mesmo nome e valor estabelecidos em SLVPropriedades.java */
    — Devem sempre estar sincronizados entre si

    CONSTANT_VALUE_COD_ESTAGIARIO CONSTANT VARCHAR2(3) := ‘E’;
    CONSTANT_VALUE_COD_EVENTUAL CONSTANT VARCHAR2(3) := ‘V’;
    CONSTANT_VALUE_COD_FUNCIONARIO CONSTANT VARCHAR2(3) := ‘F’;
    CONSTANT_VALUE_COD_REC_EXTERNO CONSTANT VARCHAR2(3) := ‘T’;

    CONSTANT_VALUE_SG_MOEDA CONSTANT VARCHAR2(2) := ‘R$’;
    CONSTANT_VALUE_SG_MOEDA_DOLAR CONSTANT VARCHAR2(2) := ‘US$’;

    — Declaracao de funcoes
    FUNCTION is_intervalo_conflito (dt_inicio1 IN DATE,
    dt_fim1 IN DATE,
    dt_inicio2 IN DATE,
    dt_fim2 IN DATE) RETURN VARCHAR2;

    FUNCTION char_to_number (p_char IN VARCHAR2) RETURN NUMBER;

    FUNCTION is_tipo_usuario (p_ad_usuario IN usuario_beneficiario_slv.fk_usubnf_ad_usuario%TYPE,
    p_cl_tipo_usuario IN tipo_usu_solicitacao.ad_tipo%TYPE) RETURN VARCHAR2;

    END PACK_SLV0001;
    /
    SHOW ERRORS;

    #74555
    Avatar de rosacbmrosacbm
    Participante

    Marcio,

    J? descobri o problema!!!
    Estava na declara??o de uma constante:
    CONSTANT_VALUE_SG_MOEDA_DOLAR CONSTANT VARCHAR2(2) := ‘US$’; , mas o valor atribu?do tem 3 posi??es.
    Quando o Oracle tentava carregar a package na mem?ria pela primeira vez, dava o erro 6502. Das outras vezes, ele n?o conseguia acessar o valor das constantes, porque n?o conseguiu carreg?-las em mem?ria!!!
    Corrigi a declara??o da constante e funcionou.
    Valeu!

Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Você deve fazer login para responder a este tópico.
plugins premium WordPress