[firebase-br] tabela temporaria

Thiago Glaser thiago.glaser em gmail.com
Seg Jan 15 17:22:17 -03 2007


Cria a tabela com nome aleatório, ou sequencial (usa um generator, por exemplo).

Ao invés de retornar Ok na procedure, vc retorna o nome da tabela.

On 1/15/07, Denilson Hauch <denilsonhauch em gmail.com> wrote:
> tenho uma sp que junta dados de duas tabelas e grava em uma terceira tabela
>
> toda vez q a sp é executada limpo a tabela e gravo os dados das duas tabelas
>
> qdo só um terminal executa funciona blza mas qdo + de um terminal tenta
> executar da erro
>
>
> como faço para criar uma tabela temporaria? ou tem alguma outra forma de se
> fazer isto sem tabela
>
>
>
> CREATE PROCEDURE "IMPORTA"
> (
>  "NOME_TEMP" VARCHAR(50)
> )
> RETURNS
> (
>  "OK" CHAR(1)
> )
> AS
> DECLARE VARIABLE CODIGO INTEGER;
> DECLARE VARIABLE I INTEGER;
> DECLARE VARIABLE DATA DATE;
> DECLARE VARIABLE MEDICO VARCHAR(50);
> DECLARE VARIABLE IDADE CHAR(3);
> DECLARE VARIABLE SEXO CHAR(1);
> DECLARE VARIABLE LAUDO BLOB;
> DECLARE VARIABLE EXAME VARCHAR(50);
> DECLARE VARIABLE NOME_NOVO VARCHAR(50);
> BEGIN
> I=0;
> DELETE FROM NOVO;
> FOR select COD_ANTIGO, DATA, MEDICO, IDADE, SEXO, LAUDO, EXAME, NOME FROM
> ANTIGO
> WHERE NOME CONTAINING :NOME_TEMP
> into :CODIGO, :DATA, :MEDICO, :IDADE, :SEXO, :LAUDO, :EXAME, :NOME_NOVO
> DO
> BEGIN
> I= I + 1;
> INSERT INTO NOVO(COD_NOVO, DATA, MEDICO, IDADE, SEXO, LAUDO, EXAME, NOME,
> CONTROLE, CONT)
> values(:CODIGO, :DATA, :MEDICO, :IDADE, :SEXO, :LAUDO, :EXAME, :NOME_NOVO,
> 'A', :I);
> END
> FOR select ITENS_RECE.N_RECEP2,  ITENS_RECE.RESULTADO, ITENS_RECE.TITULO,
> RECEPCAO.DT_EXAME, PACIENTES.SEXO, PACIENTES.IDADE, PACIENTES.NOME_PAC,
> MEDICOS.NOME_MEDICO
> FROM ITENS_RECE,  RECEPCAO, PACIENTES, MEDICOS
> WHERE NOME_PAC CONTAINING :NOME_TEMP AND ITENS_RECE.N_RECEP2 =
> RECEPCAO.N_RECEP2
>      AND  RECEPCAO.COD_PAC = PACIENTES.COD_PAC AND RECEPCAO.CODIGO =
> MEDICOS.CODIGO
> into :CODIGO, :LAUDO, :EXAME, :DATA, :SEXO, :IDADE, :NOME_NOVO, :MEDICO
> DO
> BEGIN
> I= I + 1;
> INSERT INTO NOVO(COD_NOVO, DATA, MEDICO, IDADE, SEXO, LAUDO, EXAME,
> NOME,CONTROLE, CONT)
> values(:CODIGO, :DATA, :MEDICO, :IDADE, :SEXO, :LAUDO, :EXAME,
> :NOME_NOVO,'N',:I);
> END
> SUSPEND;
> END
>
>
>
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.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
>
>


-- 
Thiago Glaser




Mais detalhes sobre a lista de discussão lista