[firebase-br] [OFF] - Procedure de FB p/ MySQL

Magnun Oliveira magnunoliveira em gmail.com
Qui Nov 5 16:43:52 -03 2009


Boa tarde, gostaria de saber se alguem da lista tem experiencia com Mysql e
possa me dar uma força na conversao dessa procedure ...

Um usuario de uma lista de delphi deu algumas dicas, mas ainda nao to
sacando muito bem o esquema dos cursors e da forma de retorno das linhas no
Mysql.
A ideia da procedure é a seguinte:

faço um for select em uma tabela A.
A cada passagem do loop, eu testo se determinado campo de A está cadastrado
na tabela B, caso sim, pego o valor de um campo da tabela B e faço o fetch
da linha, caso nao encontre esse valor em B, faço um teste em uma tabela C e
pego um valor de C e faço o fetch da linha ...

Seria basicamente um loop e um if else dentro dele.


Se alguem souber como fazer ...
segue a procedure em FB ...

vlw



SET TERM ^ ;

RECREATE PROCEDURE AGENDA
RETURNS (
ID_PESSOA INTEGER,
NOME VARCHAR(75),
TELEFONE_1 VARCHAR(12),
TELEFONE_2 VARCHAR(12),
CELULAR VARCHAR(12),
EMAIL VARCHAR(50),
SITE VARCHAR(50),
PESSOA CHAR(1),
ID_CIDADE INTEGER)
AS
DECLARE VARIABLE ENCONTRA INTEGER;
begin

for select PESSOAS.ID_PESSOA, PESSOAS.NOME, PESSOAS.TELEFONE1,
PESSOAS.TELEFONE2, PESSOAS.EMAIL, PESSOAS.SITE, PESSOAS.ID_CIDADE from
PESSOAS
into
:ID_PESSOA, :NOME, :TELEFONE_1, :TELEFONE_2, :EMAIL, :SITE, :ID_CIDADE
do
begin

ENCONTRA = null;
CELULAR = null;

select PESSOA_FISICA.ID_PESSOA_FISICA, PESSOA_FISICA.CELULAR from
PESSOA_FISICA where PESSOA_FISICA.ID_PESSOA = :ID_PESSOA
into
:ENCONTRA, :CELULAR;

if (ENCONTRA is not null) then
PESSOA = 'F';
else
begin

select PESSOA_JURIDICA.ID_PESSOA_JURIDICA from PESSOA_JURIDICA where
PESSOA_JURIDICA.ID_PESSOA = :ID_PESSOA
into
:ENCONTRA;

if (ENCONTRA is not null) then
PESSOA = 'J';

end
suspend;

end

end^

SET TERM ; ^



Mais detalhes sobre a lista de discussão lista