Como criar uma stored procedure no oracle 10g?

7 respostas
R

Estou tentando criar uma sp, no oracle mas esta aparecendo o seguinte erro:
ERROR na linha 4: PLS-00428: é esperada uma cláusula INTO nesta instrução SELECT

SP:

CREATE OR REPLACE PROCEDURE exemplo

as

begin

select * from funcionario;

end;

7 Respostas

V

A clausula into não é opcional em stored procedures do Oracle:

CREATE OR REPLACE PROCEDURE exemplo
AS
BEGIN
   DECLARE rowFunc funcionario%rowtype;

   SELECT * INTO rowFunc 
   FROM funcionario;
END;

Se eu não me engano fica assim, faz muito tempo que não uso Oracle.

A

só corrigindo…

CREATE OR REPLACE PROCEDURE exemplo   
AS   
   rowFunc funcionario%rowtype;   

BEGIN   
    
   SELECT * INTO rowFunc   
   FROM funcionario;   
END;

DECLARE só precisa se for um bloco pl anonino…

R

Valeu!!

é um pouco diferente do Sql Server.

R

E para executar:

Coloquei exec exemplo, não deu
tentei:
begin
execute exemplo
end

ou
begin
exemplo();
end

A

Para executar no SQL*Plus:

execute exemplo;

Se for em outra ferramenta, você pode executar como bloco anônimo:

BEGIN
exemplo;
END;
/

Outra coisa, o que você está tentando fazer exatamente?
O Oracle, diferentemente do SQL Server, não devolve um result set diretamente de uma stored procedure. Você precisa devolver o result set em um parâmetro OUT (tipo REF CURSOR) ou em uma tabela temporária (GLOBAL TEMPORARY TABLE).

V

alves.Felipe:
só corrigindo…

CREATE OR REPLACE PROCEDURE exemplo   
AS   
   rowFunc funcionario%rowtype;   

BEGIN   
    
   SELECT * INTO rowFunc   
   FROM funcionario;   
END;

DECLARE só precisa se for um bloco pl anonino…

Bem que falei que tava um pouco enferrujado, heheehe.

R

Olá,

Realmente é assim, só que esta aparecendo um erro.
Pelo o que eu pesquisei terei que criar um cursor, pois o select retorna mais de uma linha.

Valeu pelas dicas!!!

Criado 28 de julho de 2010
Ultima resposta 28 de jul. de 2010
Respostas 7
Participantes 4