[firebase-br] Store procedure
John Kennedy
johnbh3 em gmail.com
Qui Nov 3 14:45:21 -03 2005
Beleza parceiro, na verdade eu não sabia que existia mais de um telefone..
O mais importante e estar envolvido, poder ajudar, contribuir para os
colegas um pouco, mas um pouco que em grandes proporções se torna
gigante.
O firebird o mundo do software livre so tende a ganhar.
Um abraço parceiro.
Em 02/11/05, RedDevil<reddevil em reddevil.eti.br> escreveu:
> 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.
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista