[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