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;
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;
A clausula into não é opcional em stored procedures do Oracle:
[code]
CREATE OR REPLACE PROCEDURE exemplo
AS
BEGIN
DECLARE rowFunc funcionario%rowtype;
SELECT * INTO rowFunc
FROM funcionario;
END;[/code]
Se eu não me engano fica assim, faz muito tempo que não uso Oracle.
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…
Valeu!!
é um pouco diferente do Sql Server.
E para executar:
Coloquei exec exemplo, não deu
tentei:
begin
execute exemplo
end
ou
begin
exemplo();
end
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).
[quote=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…[/quote]
Bem que falei que tava um pouco enferrujado, heheehe.
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!!!