[firebase-br] Criar procedure generica para update
Rubem Nascimento da Rocha
djpardalrocha em hotmail.com
Sáb Fev 10 20:41:00 -03 2007
Além dessa pergunta, pq ñ usar Generators?
Sds.
>From: "Walter Cruz" <walter.php em gmail.com>
>Reply-To: FireBase <lista em firebase.com.br>
>To: FireBase <lista em firebase.com.br>
>Subject: Re: [firebase-br] Criar procedure generica para update
>Date: Sat, 10 Feb 2007 18:50:50 -0300
>
>só uma coisa washington: esse tipo de consulta não traz problemas de
>concorrência?
>
>[]'s
>- Walter
>
>On 2/9/07, Washington Tavares <washingtontavares em gmail.com> wrote:
> > Rodrigo,
> >
> > Eu criei essa procedure para me retornar uma chave primária, veja se
> > através dela lhe dar alguma luz.
> >
> > CREATE PROCEDURE SP_GERAR_ID (
> > tabela varchar(30),
> > chave varchar(30))
> > returns (
> > codigo integer)
> > as
> > declare variable xsql varchar(200);
> > begin
> > XSQL='SELECT MAX('||:CHAVE||') FROM '||:TABELA;
> > EXECUTE STATEMENT XSQL INTO :CODIGO;
> > IF (:codigo>1)
> > Then codigo=:codigo+1;
> > Else codigo=1;
> > SUSPEND;
> > end^
> >
> > Washington
> >
> > Em 09/02/07, Rodrigo Teodoro<rodrigo_teodoro em hotmail.com> escreveu:
> > > Boa tarde,Preciso criar uma procedure para update genérico que busca
>os registros numa tabela temporária e atualiza a tabela principal.Alguém
>sabe uma boa forma de fazer isto? Até criei uma procedure que funciona!!!
>Mas.... para cada campo ela faz um select, e isto não e bom, principalmente
>pelo tamanho da carga que estimo vir.Uma forma que penso pra resolver é num
>único select trazer o nome do campo e o conteúdo, mas... como pegar o nome
>do campo? rs....Abaixo o que já fiz pra terem a noção da POG atual (mas
>funciona... rs...) !BEGIN V_DDL_TEMP = 'SELECT COD' || UPPER(:P_TABELA)
>|| ' FROM TMP_' || UPPER(:P_TABELA) || ' WHERE FLAGUPDATE=1';
>V_CHAVEPRIMARIA = 0; FOR EXECUTE STATEMENT V_DDL_TEMP INTO
> V_CHAVEPRIMARIA DO BEGIN V_DDL = ''; V_DDL =
>'UPDATE ' || UPPER(:P_TABELA) || ' T SET'; FOR SELECT
> TRIM(UPPER(O_CAMPO)), TRIM(UPPER(O_INDICE))
> FROM BUSCADESCRICAO(UPPER(:P_TABELA)) INTO
> V_CAMPO, V_INDICE DO BEGIN
>IF (UPPER(V_INDICE) = 'PRIMARY KEY') THEN V_PK = V_CAMPO;
> ELSE BEGIN V_DDL = V_DDL ||
> ' T.' || UPPER(V_CAMPO) || ' =' ||
> ' (SELECT TMP.' || UPPER(V_CAMPO) || '
>FROM TMP_' || UPPER(:P_TABELA) || ' TMP' || '
>WHERE TMP.' || UPPER(V_PK) || ' = ' ||
>V_CHAVEPRIMARIA || ')' || ','; END END
> --RETIRA A ULTIMA VIRGULA V_DDL = SUBSTRING(V_DDL FROM 1 FOR
>(CHAR_LENGTH(V_DDL) - 1)); V_DDL = V_DDL || ' WHERE COD' ||
>UPPER(:P_TABELA) || ' = ' || V_CHAVEPRIMARIA; EXECUTE STATEMENT
>V_DDL; V_CHAVEPRIMARIA = 0; ENDEND Obrigado,
> > >
> > >
> > >
> > > Rodrigo Teodoro
> > > _________________________________________________________________
> > > Descubra e experimente alguns novos serviços online no Windows Live
>Ideas
> > > http://ideas.live.com
> > > ______________________________________________
> > > 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
> > >
> >
> >
> > --
> > Washington Tavares
> >
> > ______________________________________________
> > 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
> >
>
>______________________________________________
>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
_________________________________________________________________
MSN Busca: fácil, rápido, direto ao ponto. http://search.msn.com.br
Mais detalhes sobre a lista de discussão lista