Creating procedure

Scripts Diversos para o Oracle SQL*Plus. (Relacionado a ferramenta Oracle SQL*Plus, para questões de SQL, usar o forum SQL)
Post Reply
Ivone
Rank: Programador Júnior
Rank: Programador Júnior
Posts: 16
Joined: Fri, 05 Mar 2010 1:13 pm
Location: São Paulo
Ivone

Hello,

I am creating a procedure and there was a compilation error, I would like to know what is wrong.

Select all

 
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; 
/ 

Thanks
victorhugomuniz
Moderador
Moderador
Posts: 1396
Joined: Fri, 01 Feb 2008 2:06 pm
Location: Rio de Janeiro - RJ
Contact:
:D

Ivone,

Which error is giving ???

Have you taken the SELECT from within and tested it separately?

Try in this way ..
To use the entry parameter should put two points (:)

Select all

 
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
Posts: 16
Joined: Fri, 05 Mar 2010 1:13 pm
Location: São Paulo
Ivone

Error:
Warning: Procedure created with compilation errors.

I made the change and continues with the same error

The SELECT runs separately

Select all

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
Posts: 1396
Joined: Fri, 01 Feb 2008 2:06 pm
Location: Rio de Janeiro - RJ
Contact:
:D

Can not you run this in an IDE to see which error?
Error:
Warning: Procedure created with compilation errors.
This is not the error
victorhugomuniz
Moderador
Moderador
Posts: 1396
Joined: Fri, 01 Feb 2008 2:06 pm
Location: Rio de Janeiro - RJ
Contact:
:D

Correcting ..
It does not really have the two points to use the input parameter

follows an example

Select all

 
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; 
/ 
has to know which error is giving to know the solution ...
victorhugomuniz
Moderador
Moderador
Posts: 1396
Joined: Fri, 01 Feb 2008 2:06 pm
Location: Rio de Janeiro - RJ
Contact:
:D

Solution ..

Select all

 
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; 
/ 
The error was this:

Select all

 
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
Posts: 1177
Joined: Thu, 15 Oct 2009 10:28 am
Location: Recife

To see the error uses the command:

Select all

 
show errors 
Ivone
Rank: Programador Júnior
Rank: Programador Júnior
Posts: 16
Joined: Fri, 05 Mar 2010 1:13 pm
Location: São Paulo
Ivone

Now it worked
thank you very much
Post Reply
  • Information
  • Who is online

    Users browsing this forum: No registered users and 17 guests