[firebase-br] Store procedure
RedDevil
reddevil em reddevil.eti.br
Qua Nov 2 22:38:47 -03 2005
ola pessoal.
tudo bem com voces?
sincerely, espero que sim...
;o)
o post que eu fiz em resposta a msg do Luis Carlos me levou a dar um look no
livro do Mr. Cantu, que foi a unica literatura que eu usei para pegar o
principio da coisa no que diz respeito a criaçao de SP's (alias, para falar a
verdade, eu aprendi SP's com um artigo do Mr. Cantu na ClubeDelphi, artigo esse
que foi revisado e ampliado para constar no livro Firebird Essencial...;o), e
olhando o livro eu percebi que existia um erro na SP do John para o Denis que eu
postei antes...
tipow assim, da maneira que eu fiz antes, quando a gente fizesse a chamada a SP
daria o erro "multiples rows in a singleton select" (algo parecido...;o), pois
eh necessario usar o "FIRST" para que um select daqueles retorne uma unica
linha... entao eu refiz a SP, testei no IBExpert e cheguei a isso ae abaixo...
dessa maneira sim retorna o telefone do aluno, os dois telefones, tres, quatro
ou ate cinco telefones que existam cadastrados:
/* ------------------------------- inicio da
SP --------------------------------------- */
CREATE PROCEDURE TESTE_TEL ( COD_ALUNO VARCHAR (10) )
RETURNS (
CODIGO VARCHAR (10),
NOME_ALUNO VARCHAR (100),
IDADE_ALUNO VARCHAR (30),
NUM_TEL1 VARCHAR(10),
NUM_TEL2 VARCHAR(10),
NUM_TEL3 VARCHAR(10),
NUM_TEL4 VARCHAR(10),
NUM_TEL5 VARCHAR(10)
)
AS
BEGIN
For Select ALUNO.COD_ALUNO, ALUNO.NOM_ALUNO, ALUNO.IDADE_ALUNO
From ALUNO
Where (ALUNO.COD_ALUNO = :COD_ALUNO)
Into :CODIGO, :NOME_ALUNO, :IDADE_ALUNO
Do
Begin
Select first 1 TELEFONE.TEL from TELEFONE
Where TELEFONE.COD_ALUNO = :COD_ALUNO
Into :NUM_TEL1;
Select first 1 TELEFONE.TEL from TELEFONE
Where TELEFONE.COD_ALUNO = :COD_ALUNO
and telefone.tel <> :num_tel1
Into :NUM_TEL2;
Select first 1 TELEFONE.TEL from TELEFONE
Where TELEFONE.COD_ALUNO = :COD_ALUNO
and telefone.tel <> :num_tel1
and telefone.tel <> :num_tel2
Into :NUM_TEL3;
Select first 1 TELEFONE.TEL from TELEFONE
Where TELEFONE.COD_ALUNO = :COD_ALUNO
and telefone.tel <> :num_tel1
and telefone.tel <> :num_tel2
and telefone.tel <> :num_tel3
Into :NUM_TEL4;
Select first 1 TELEFONE.TEL from TELEFONE
Where TELEFONE.COD_ALUNO = :COD_ALUNO
and telefone.tel <> :num_tel1
and telefone.tel <> :num_tel2
and telefone.tel <> :num_tel3
and telefone.tel <> :num_tel4
Into :NUM_TEL5;
suspend;
END
END
/* ------------- final da SP ------------------------- */
[]s
força sempre!!!
ate +++
--
Luiz "RedDevil" Stefanski - Linux User #399026
http://www.RedDevil.eti.br - Delphi 4 Powered by IBObjects
exemplos e dicas sobre o IBObjects:
http://www.firebase.com.br/cgi-bin/firebase.cgi/dnld?ID=165
compilaçao/instalaçao do IBObjects sabor BPG:
http://www.firebase.com.br/cgi-bin/firebase.cgi/artigo?ID=630
Mais detalhes sobre a lista de discussão lista