Jump to content
MarKteus

Como adicionar um nova procedure no corpo do pacote

Recommended Posts

Inseri uma nova proc em um pacote mas o seguinte erro está acontecendo ao executar a aplicação

ORA-06508: PL/SQL: não foi localizada a unidade de programa que está sendo chamada: "LOCAL.PKG_CLIENTE"

 

 

 

 

Mensagem de erro do SqlDeveloper

 

  • Erro(4,13): PLS-00323: o subprograma ou o cursor 'SP_SELECIONA_CLIENTES_POR_ID' está declarado em uma especificação de pacote e deve ser definido no texto do pacote

Alguém sabe o que pode ser ?

Share this post


Link to post
Share on other sites

O que eu fiz foi

Especificar no cabeçalho junto com uma já existente e depois no body entre o begin e end, coloquei a procedure abaixo da já existente conforme abaixo:

--- CABEÇALHO DO PACOTE
CREATE OR REPLACE PACKAGE PKG_CLIENTE IS
TYPE CURSOR_CLIENTE IS REF CURSOR;
PROCEDURE SP_SELECIONA_CLIENTES(RETORNO OUT CURSOR_CLIENTE);
PROCEDURE SP_SELECIONA_CLIENTES_POR_ID(PD_ID IN CLIENTE.IDCLIENTE%TYPE, RETORNO OUT CURSOR_CLIENTE);
END;

 

--- BODY

create or replace PACKAGE BODY PKG_CLIENTE IS
PROCEDURE SP_SELECIONA_CLIENTES(RETORNO OUT CURSOR_CLIENTE)
IS
bla bla;
BEGIN
bla bla;
END;


PROCEDURE SP_SELECIONA_CLIENTES_POR_ID(P_ID IN CLIENTE.IDCLIENTE%TYPE, RETORNO OUT CURSOR_CLIENTE)
IS
bla bla;
BEGIN
bla bla;
END;
END;

Como é feito o procedimento ?

Tem algum exemplo que possa passar o google não tá ajudando muito :(

Share this post


Link to post
Share on other sites

Aparentemente o erro está só na especificação do parâmetro da procedure

 

PROCEDURE SP_SELECIONA_CLIENTES_POR_ID(P_ID IN CLIENTE.IDCLIENTE%TYPE, RETORNO OUT CURSOR_CLIENTE)

 

Na specification está PD_ID IN CLIENTE_FILIAL.CD_CLIE_FILI%TYPE

 

na body está P_ID IN CLIENTE_FILIAL.CD_CLIE_FILI%TYPE

 

 

Deixe os dois parâmetros com o mesmo nome (PD_ID) , dai resolve.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By MarcosAntonio
      Boa tarde !
      estou carregando um arquivo texto numa variável BLOB e preciso manipular em loop, para ler linha a linha e aplicar os SUBSTRs para inserir no banco, mas não sei como fazer o loop, a interação entre as linhas e quando saber o momento de sair do loop, alguém pode me ajudar?

      ex do conteúdo do BLOB:
       
      2AAA02012021123421
      2AAA02012021213453
      2AAA02012021105413
       
      quero por exemplo retirar a informação da linha 2 a partir do quarto caracter e parando no decimo segundo caracteres
    • By nelinhor
      Bom dia.
      Professor ( José Carlos Macoratti ) Sempre vejo alguns video do Senhor.
      Estou fazendo um pequeno aplicativo no Visual Studio 2019.
      Para fazer um controle de equipamentos e outros mais. Com geração de QRCode mais estou tendo alguma dificuldades, gostaria de saber se o senhor pode me ajudar?
      1 - Estou que rendo fazer no formate de gerar um relatorio um Locate ou um like dentro de um Select usando where e o like mais está dando erro.
           A minha Base de Dados é Access.
          Relatorio RDLC 
          Estou usando está Select:
          SELECT idaluno,nomealuno,responsavel,cpf,rg,fone_contato,desistente 
          FROM aluno 
          WHERE nomealuno LIKE '%' +@nomealuno+ '%'

          Obs: Estou tentando ver se isso funciona no BOTÃO para a buscar do que for lançado no Textbox.

          Mais este Select não fuciona quando vou testar na criação dentro da tabela quando eu a crio. o select.
       
      2 - Estou criando um relatório para ir buscar na Base de Dados o campo imagem, para formar o relatório das etiquetas que está em QrCode
           Mais etornando na coluna do relatório o nome erro
           Tem como o senhor me ajudar.
      Outra pergunta não sei se o senhor usa este RDLC que usamos o componente Report Viewer ele tem uma opção de Salvar em três formatos EXCEL, WORD e PDF mais a opção PDF da um erro na hora de gerar o PDF.
      Não sou programador, sou uma pessoa curiosa.
    • By Motta
      Oracle is moving its headquarters from Silicon Valley to Austin, Texas
    • By Thiago Btos
      Boa tarde galera.
       
      Fiz um select que tras 4 informações do banco (matricula, nome, data e hora)
      SELECT QD1_MAT, RA_NOME, QD1_DTBAIX AS DATA, QD1_HRBAIX FROM QD1010 QD1 INNER JOIN SRA010 SRA ON RA_MAT = SUBSTR(QD1_MAT, 5) AND SRA.D_E_L_E_T_ <> '*' ORDER BY QD1_DTBAIX, QD1_HRBAIX Retornando os seguintes registros:

       
       
       
      Preciso retornar somente as linhas em amarelo, que seria a seguinte condição.
      Caso tiver alguma matricula igual, trazer somente o registro com a maior data, junto com seu respectivo horário.
       
       
      O mais próximo que consegui chegar foi utilizando o MAX para data e hora, e agrupando o restante dos campos.
      SELECT QD1_MAT,RA_NOME,MAX(DATA), MAX(QD1_HRBAIX) FROM ( SELECT QD1_MAT, RA_NOME, QD1_DTBAIX AS DATA, QD1_HRBAIX FROM QD1010 QD1 INNER JOIN SRA010 SRA ON RA_MAT = SUBSTR(QD1_MAT, 5) AND SRA.D_E_L_E_T_ <> '*' ) GROUP BY QD1_MAT,RA_NOME Porém na hora ele não pega o valor correspondente e sim o valor máximo.

       
       
      Ai estou travado nessa parte, como faço para trazer a hora corresponde sem o restante dos registros?
    • By mr22robot
      Boa tarde. Estou com o seguinte problema: Preciso retornar um selct da seguinte maneira:
      exemplo que não funciona:
      select codusur,numnota,codcli,cliente,vltotal,numtransvenda,dev,decode(vlvenda),if(vlvenda > 100 then 1 else 2) from( select tb1.codusur,tb1.numnota,tb1.codcli,tb1.cliente,tb1.vltotal,tb1.numtransvenda,DECODE(tb2.VLTOTAL,NULL,0,tb2.VLTOTAL)DEV from( select codusur,numnota,pcnfsaid.codcli,pcnfsaid.cliente,pcnfsaid.vltotal,pcnfsaid.numtransvenda from pcnfsaid where pcnfsaid.dtsaida > '01-OCT-2020' and pcnfsaid.dtcancel is null )tb1 left outer join (select DISTINCT VLTOTAL,VW_INTEGRA_DEVOLUCAO_TOTAL.NUMTRANSVENDA from VW_INTEGRA_DEVOLUCAO_TOTAL )tb2 on tb1.NUMTRANSVENDA = tb2.NUMTRANSVENDA order by numnota ) Como pode reparar, eu usei um if/else já que não sei a forma correta de usar. Pois com DECODE não consegui usar uma forma de fazer a comparação. 
      Pois preciso mesmo retornar uns valores fixos. Ex: 
      Se o valor > 40000, retorna um valor x; Se for maior que 5000 retorna um valor y. 
      Aguardo a ajuda dos amigos. Grato
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.