Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wagner Araújo

Procedure

Recommended Posts

Pessoal,

Não conheço muito Oracle, porém preciso criar uma procedure e não estou conseguindo.

Podem me ajudar por favor?

 

create or replace procedure "SP_VALIDA_LOGIN"

(pLogin IN VARCHAR2,

pSenha IN VARCHAR2)

is

BEGIN

SELECT *

from ccm_usuario

where login = 'wagner' and senha = 'wagner';

END SP_VALIDA_LOGIN;

 

Falha de compilação; linha 6 (13:49:53)

PLS-00428: é esperada uma cláusula INTO nesta instrução SELECT

 

Abs,

 

Wagner Araújo

wag_araujo@hotmail.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

A parte de permissões do Oracle é bastante completa e creio que dificilmente seja preciso fazer uma SP para permissão.

 

Por que você precisa desta validação ?

 

mas segue síntaxe...

 

create or replace procedure "SP_VALIDA_LOGIN"
(pLogin IN VARCHAR2,
pSenha IN VARCHAR2)
is
vn_conta number;
BEGIN
SELECT count(*) into vn_conta
from ccm_usuario
where login = 'wagner' and senha = 'wagner';
If vn_conta = 0 then
  // trata o erro
end if;
END SP_VALIDA_LOGIN;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta,

Eu estou fazendo uma aplicação em c#.net. Comecei agora e pretendo deixar tudo em procedure.

Alterei conforme você orientou e deu certo. Só retirei o If.

 

create or replace procedure "SP_VALIDA_LOGIN"(

pLogin IN VARCHAR2,

pSenha IN VARCHAR2)

is

vn_conta number;

BEGIN

SELECT count(*) into vn_conta

from ccm_usuario

where login = pLogin

and senha = pSenha;

END SP_VALIDA_LOGIN;

 

Abs,

 

Wagner

 

Motta,

Me tira mais uma dúvida por favor. Eu to tentando executar a procedure (Begin SP_VALIDA_LOGIN('wagner', 'wagner'); End;) e não esta retornando nada e deveria retornar o resultado do count.

O que estou fazendo errado?

Abs,

 

Wagner

Compartilhar este post


Link para o post
Compartilhar em outros sites

Procedures só retornam valor quando tem parametros out ou in out.

 

Functions retornam valor.

 

create or replace function
"SP_VALIDA_LOGIN"(
pLogin IN VARCHAR2,
pSenha IN VARCHAR2) return number
is
vn_conta number;
BEGIN
SELECT count(*) into vn_conta
from ccm_usuario
where login = pLogin
and senha = pSenha;
return vn_conta;
END SP_VALIDA_LOGIN;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, eu estou com um problema semelhante porém eu quero retornar uma tabela inteira de valores, como se fosse uma View, porém eu preciso passar alguns parâmetros.

 

Todos os casos que vi de PROCEDURE com SELECT utiliza-se a cláusula INTO, porém isso me limita a retornar apenas as variáveis especificadas na cláusula INTO, como fazer para a PROCEDURE trazer a tabela inteira como no SQL Server.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isto pode ser feito com o uso de REF CURSOR.

 

Pode ser feito de diverss formas.

 

Um exemplo.

 

Aqui aonde trabalho usamos para gerar relatório no Crystal Reports, o Cursor via como parametro da rotina.

 

http://forum.imasters.com.br/index.php?/topic/316491-fazer-proc-que-retorna-registro/page__hl__Cursor__fromsearch__1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Motta,

 

consegui fazer usando Package.

 

Eu estou tentando criar uma tabela de resultados para gerar um relatório em Crystal, mas na hora de configurar a Procedure no Crystal deu um problema

 

Erro: número incorreto de tipos de argumentos na chamada para 'PR_xxx'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual drive está usando ?

 

Quais suas versões de Crystal e Oracle ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O driver que instalei é o ODAC .Net, o banco é 9i e o Crystal é o que já vem instalado com o Visual Studio 2008 (não sei especificar qual é a versão, acredito que seja o compatível com o crystal 10).

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem um drive especifico para rodar com Stored Procedures, baixe de graça no sítio da Crystal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nas opções do Crystal também tem uma marcação em DATABASE que permite executar SP´s.

 

Na configuração do drive também tem de marcar SP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nas opções do Crystal já está marcado para executar SP, mas não sei nem onde entrar para configurar o tal Driver, já procurei no site da da Business Objects e não acho o tal driver do Crystal.

 

Como faço para acessar o driver dele?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O driver é configurado lá no ODBC.

 

Os drives usados aqui são o cr oracle wire protocol 4.20 e cr oracle wire protocol 5.3

 

Numa pesquisa rápida não achei o local de download.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.