Problemas para executar procedure

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
keoma
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Qua, 19 Dez 2007 12:49 pm
Localização: rio branco-ac

Fala pessoal,

estou com um pequeno problema na criaçao de uma procedure e gostaria muito da ajuda de v6 para solucuionar isso. segue abaixo o codigo e logo apos a msg do erro:

Selecionar tudo

CREATE OR REPLACE PROCEDURE P_PESQCLICOB
   ( pRCA PCPREST.codusur%type)
   AS
BEGIN
    DECLARE PESQCLICOB INT;
    SELECT pcprest.codfilial, pcprest.codcli, pcclient.cliente, pcprest.duplic, pcprest.prest,
    pcprest.codusur, pcprest.dtvenc, pcprest.codcob, pcprest.dtemissao
    INTO PESQCLICOB
    FROM PCPREST
    INNER JOIN PCCLIENT ON PCPREST.codcli=PCCLIENT.codcli
    WHERE PCPREST.codusur=pRCA AND PCPREST.dtpag IS NULL;
END P_PESQCLICOB; 
////////////////////////////////

Selecionar tudo

[1]: Statement processed in 0,11 sec with warnings
[1]: (Warning) PLS-00103: Encountered the symbol "SELECT" when expecting one of the following:
       begin function package pragma procedure subtype type use
      <an identifier> <a double-quoted delimited-identifier> form
     current cursor  The symbol "begin" was substituted for "SELECT" to continue.  
[1]: (Warning) PLS-00103: Encountered the symbol "JOIN" when expecting one of the following:
       , ; for group having intersect minus order start union where     connect
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

Tem um problema na declaracao da variavel, nesse caso você não precisa escrever "declare", e alem disso a variavel deve estar entre o nome da procedure e o begin..
por exemplo..

Selecionar tudo

CREATE OR REPLACE PROCEDURE p_pesqclicob (prca pcprest.codusur%TYPE)
AS
   pesqclicob   INT;
BEGIN
   SELECT pcprest.codfilial,
          pcprest.codcli,
          pcclient.cliente,
          pcprest.duplic,
          pcprest.prest,
          pcprest.codusur,
          pcprest.dtvenc,
          pcprest.codcob,
          pcprest.dtemissao
     INTO pesqclicob
     FROM pcprest, pcclient
    WHERE pcprest.codusur = prca
      AND pcprest.codcli = pcclient.codcli
      AND pcprest.dtpag IS NULL;
END p_pesqclicob;
[]'s
keoma
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Qua, 19 Dez 2007 12:49 pm
Localização: rio branco-ac

apos refazer o codigo, está aparecendo um outro erro:

Selecionar tudo

ORA-00947: not enough values
verifiquei toda procedure, tentei utilizar INNER JOIN para relacionar as duas tabelas e nd deu certo.

Selecionar tudo

CREATE OR REPLACE PROCEDURE P_PESQCLICOB(pRCA PCPREST.codusur%type)
AS
PESQCLICOB INT;
BEGIN   
     SELECT pcprest.codfilial, 
            pcprest.codcli, 
            pcclient.cliente, 
            pcprest.duplic, 
            pcprest.prest,
            pcprest.codusur, 
            pcprest.dtvenc, 
            pcprest.codcob, 
            pcprest.dtemissao
       INTO pesqclicob 
     FROM pcprest, pcclient 
    WHERE pcprest.codusur = prca 
      AND pcprest.codcli = pcclient.codcli 
      AND pcprest.dtpag IS NULL;
END P_PESQCLICOB;
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

Esse erro é referente a quantidade de campos do seu select, nesse caso você está consultando varios campos, porem você está dando INTO em uma unica variavel, por exemplo

pesquisando somente um campo.

Selecionar tudo

select codigo
  into v_codigo
from tabela;
pesquisando mais de um campo..

Selecionar tudo

select codigo,
    nome,
    endereco
into v_codigo,
   v_nome,
   v_endereco
from tabela
como você pode ver acima, informei os 3 campos que eu quero e as 3 variavies que vão receber seu conteudo..

[]'s
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 25 visitantes