Criando procedure

Scripts Diversos para o Oracle SQL*Plus. (Relacionado a ferramenta Oracle SQL*Plus, para questões de SQL, usar o forum SQL)
Responder
Ivone
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 16
Registrado em: Sex, 05 Mar 2010 1:13 pm
Localização: São Paulo
Ivone

Olá,

Estou criando uma procedure e houve um erro de compilação, gostaria de saber o que está errado.

Selecionar tudo

CREATE OR REPLACE PROCEDURE PESO_VALOR
(p_valorprato IN valor_kg.valor%TYPE)
IS
BEGIN
SELECT V.DESCRICAO, B.QTDE KG, (V.VALOR * B.QTDE / (V.PESO)) VALOR
FROM BALANCA B, VALOR_KG V
WHERE V.CODKG = B.CODKG
AND V.CODKG = 01
AND v.valor = p_valorprato;
END PESO_VALOR;
/
Obrigada
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

ivone,

qual erro que ta dando ???

você já tirou o select de dentro e testou ele separadamente??

tenta dessa forma..
para utilizar o parametro de entrada deve colocar dois pontos(:)

Selecionar tudo

CREATE OR REPLACE PROCEDURE PESO_VALOR
(p_valorprato IN valor_kg.valor%TYPE)
IS
BEGIN
SELECT V.DESCRICAO, B.QTDE KG, (V.VALOR * B.QTDE / (V.PESO)) VALOR
FROM BALANCA B, VALOR_KG V
WHERE V.CODKG = B.CODKG
AND V.CODKG = 01
AND v.valor = :p_valorprato;
END PESO_VALOR;
/ 
Ivone
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 16
Registrado em: Sex, 05 Mar 2010 1:13 pm
Localização: São Paulo
Ivone

erro:
Aviso: Procedimento criado com erros de compilação.

Fiz a alteração e continua com o mesmo erro

O select roda separadamente

Selecionar tudo

SQL> SELECT V.DESCRICAO, B.QTDE KG, (V.VALOR * B.QTDE / (V.PESO)) VALOR
  2  FROM BALANCA B, VALOR_KG V
  3  WHERE V.CODKG = B.CODKG
  4  AND V.CODKG = 01;

DESCRICAO                    KG      VALOR
-------------------- ---------- ----------
PRATO PRINCIPAL             350     10,465
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

você não consegue rodar isso em uma ide para ver qual e o erro?
erro:
Aviso: Procedimento criado com erros de compilação.
isso não e o erro
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

corrigindo..
realmente não tem os dois pontos para utilizar o parametro de entrada

segue um exemplo

Selecionar tudo

CREATE OR REPLACE PROCEDURE aumenta_sal (p_empno IN emp.empno%TYPE) IS
BEGIN
	UPDATE 
		scott.emp
	SET 
		sal = sal * 1.10
	WHERE 
		empno = p_empno;
END aumenta_sal;
/
tem que saber qual o erro ta dando para saber a solução...
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

solução..

Selecionar tudo

CREATE OR REPLACE PROCEDURE PESO_VALOR
(p_valorprato IN valor_kg.valor%TYPE,
 p_pesovalor OUT NUMBER)
IS
BEGIN
SELECT (V.VALOR * B.QTDE / (V.PESO)) VALOR
INTO p_pesovalor
FROM BALANCA B, VALOR_KG V
WHERE V.CODKG = B.CODKG
AND V.CODKG = 01
AND v.valor = p_valorprato;
END PESO_VALOR;
/
o erro era esse:

Selecionar tudo

Compilation errors for PROCEDURE PESO_VALOR

Error: PLS-00428: an INTO clause is expected in this SELECT statement
Line: 5
Text: SELECT V.DESCRICAO, B.QTDE KG, (V.VALOR * B.QTDE / (V.PESO)) VALOR
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

pra ver o erro usa o comando:

Selecionar tudo

show errors
Ivone
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 16
Registrado em: Sex, 05 Mar 2010 1:13 pm
Localização: São Paulo
Ivone

Agora deu certo
Muito obrigada
Responder
  • Informação
  • Quem está online

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