Pular para o conteúdo
  • Este tópico contém 3 respostas, 2 vozes e foi atualizado pela última vez 19 anos, 1 mês atrás por Avatar de rosacbmrosacbm.
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