[firebase-br] Store procedure
RedDevil
reddevil em reddevil.eti.br
Qua Nov 2 17:05:32 -03 2005
ola John,
eu tomei a liberdade de fazer uma pequena alteraçao na SP que voce
colocou na roda...
o caso eh que a tabela de telefones do Denis pode ter mais de um numero
de telefone que pertença ao mesmo aluno...
sendo assim, eu alterei a tua SP para que ela possa retornar ate cinco
numeros de telefones pertencentes ao mesmo aluno (eu acredito que nem um
filho do Lula tenha mais do que cinco telefones para contato... falando
nisso, alguem sabe se o Lula tem filha? e se tiver, ela eh gata? mas ae
ja eh off-topic...;o).
entao a historia ficou tipow assim:
/* --------------- 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 TELEFONE.TEL from TELEFONE
Where TELEFONE.COD_ALUNO = :COD_ALUNO
Into :NUM_TEL1;
Select TELEFONE.TEL from TELEFONE
Where TELEFONE.COD_ALUNO = :COD_ALUNO
and telefone.tel <> :num_tel1
Into :NUM_TEL2;
Select TELEFONE.TEL from TELEFONE
Where TELEFONE.COD_ALUNO = :COD_ALUNO
and telefone.tel <> :num_tel1
and telefone.tel <> :num_tel2
Into :NUM_TEL3;
Select 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 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
Post By John Kennedy:
> Chegado, estou fazendo um exemplo pre supondo que tabela de telefones
> existe vinculo com a tabela de aluno.
>
> Alguma explicações.
> Observe o Inicio do código for select onde Aluno - e tabela de Aluno.
> Abaixo no laço de comando Do. Select Telefone e a tabela de Telefone.
> For Select (Tabela(Aluno)).(Campo_COD_Aluno),(Campo.Nom_Aluno) etc.
>>From Tabela(Aluno)
>
> Into: Parametro de saida... dados que você quer obter.
> NUM_TELEFONE VARCHAR(10), -- TELEFONE (TABELA DE TELEFONE)
> NOME_ALUNO VARCHAR (10), -- NOME DO ALUNO (TABELA DE ALUNO)
> CODIGO VARCHAR (100), -- CODIGO DO ALUNO (TABELA DE ALUNO)
> IDADE_ALUNO VARCHAR (30)) -- IDADE DO ALUNO (TABELA DE ALUNO)
> Observe que joguei.. somente Into :NOME_ALUNO, :CODIGO, :IDADE_ALUNO
> porque refere-se a tabela de Aluno
> Abaixo em
> Do
> Begin
> Onde eu pego o telefone do Aluno.
>
> Select TELEFONE.TEL from TELEFONE
> Where TELEFONE.COD_ALUNO =:COD_ALUNO
> Into :NUM_TELEFONE; -- Lembra-se acima eu passei esta variavel
> (TELEFONE) como parametro de saida. agora eu estou pegando o tel.
>
> Qualquer duvida....
>
> Valeu.... parceiro.
>
>
>
>
> CREATE PROCEDURE TESTE_TEL (
> COD_ALUNO VARCHAR (10),
> RETURNS (
> NUM_TELEFONE VARCHAR(10),
> NOME_ALUNO VARCHAR (10),
> CODIGO VARCHAR (100),
> IDADE_ALUNO VARCHAR (30))
> AS
> BEGIN
> For Select ALUNO.COD_ALUNO, ALUNO.NOM_ALUNO, ALUNO.IDADE_ALUNO
> From ALUNO
> Where (ALUNO.COD_ALUNO =:COD_ALUNO)
> Into :NOME_ALUNO, :CODIGO, :IDADE_ALUNO
> Do
> Begin
> Select TELEFONE.TEL from TELEFONE
> Where TELEFONE.COD_ALUNO =:COD_ALUNO
> Into :NUM_TELEFONE;
> suspend;
> END
> END
>
> Em 31/10/05, Denis Rocha<denisrocha em hotmail.com> escreveu:
>
>>Oi Pessoal,
>>
>>Estou querendo montar uma Store procedure. Mas estou me embananando todo.
>>Nem sei se tem como fazer.
>>É o seguinte. Preciso de dados de duas tabela ( alunos e telefones ).
>>
>>Como faço para que a procedure retorne os dados das duas tabelas ?
>>
>>O que quero é retornar os dados do aluno, e depois um telefone só do aluno
>>( podem ter vários ), é aí que está o problema. Pois a procedure vai
>>retornar mais que uma linha e aí dá pau.
>>
>>Obrigado.
Mais detalhes sobre a lista de discussão lista