Stored Procedure - Erro na criação

Firebird

13/03/2006

Olá amigostudo bem com vcs...espero que sim
eu estou com um probleminha e acho que vc spodem me ajudar é o seguinte

eu estou tentando criar no Interbase um Stored Procedure para consultar uma tabela...uma select bem simples...usando esse código


SET TERM ^ ;
CREATE PROCEDURE "SELECIONA_ALUNO" (PRCODIGO INTEGER)
AS
begin
  select codigo,nome,endereco,telefone from aluno where codigo = :prcodigo;
end

 ^
SET TERM ; ^


porém o IbConsole me retorna o seguinte erro

Dynamic SQL Error SQL error code = -104 Token unknown - line 4, char 73 ; Statement: CREATE PROCEDURE ´SELECIONA_ALUNO´ (PRCODIGO INTEGER) AS begin select codigo,nome,endereco,telefone from aluno where codigo = :prcodigo; end


e se eu tirar a vírgula...ficando assim
SET TERM ^ ;
CREATE PROCEDURE "SELECIONA_ALUNO" (PRCODIGO INTEGER)
AS
begin
  select codigo,nome,endereco,telefone from aluno where codigo = :prcodigo
end

 ^
SET TERM ; ^


ele me retorna esse erro

Dynamic SQL Error SQL error code = -104 Token unknown - line 5, char -1 end Statement: CREATE PROCEDURE ´SELECIONA_ALUNO´ (PRCODIGO INTEGER) AS begin select codigo,nome,endereco,telefone from aluno where codigo = :prcodigo end


onde estou errando?
Desde já agradeço


Lucianoiron

Lucianoiron

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

13/03/2006

Tente assim (vc não criou as variáveis de saída para que a função retorne algo e esqueceu a cláusula INTO no SELECT) :

SET TERM ^ ; 
CREATE PROCEDURE "SELECIONA_ALUNO" (PRCODIGO INTEGER) 
RETURNS (
codigo INTEGER,
nome VARCHAR(tamanho),
endereco VARCHAR(tamanho),
telefone VARCHAR(tamanho))
AS 
begin 
  for select codigo, nome, endereco, telefone from aluno 
  where codigo = :prcodigo into :codigo, :nome, :endereco, :telefone do
     suspend;  
end  ^ 
SET TERM ; ^



GOSTEI 0
Lucianoiron

Lucianoiron

13/03/2006

gandalf.nho funcionou certinho...sí mais uma dúvida....como eu faço isso via Delphi?...por exemplo no create de um form ou co click de um botão
Ate + amigo


GOSTEI 0
Lucianoiron

Lucianoiron

13/03/2006

como vc já deve ter percebibo...sou leigo em Stored Procedure...então além da dúvida acima gostaria de saber se há possibilidade de colocar o resultado dessa consulta num DbGrid...estou usando o componente TStoredProc da paleta BDE
Abraços


GOSTEI 0
Gandalf.nho

Gandalf.nho

13/03/2006

Como é uma SP do tipo selecionável (que pode retornar uma ou mais linhas) use TQuery e não TStoredProc (que é recomendado para SPs executáveis). Basta fazer assim:
SELECT * FROM procedure(lista_parâmetros)


Uma sugestão, procure não usar BDE que já é ultrapassado. Experimente usar componentes de acesso direto ao banco (IBX, por exemplo) ou até mesmo DBExpress.


GOSTEI 0
POSTAR