Fórum tenho que atualizar os primeiro 50 registros de um select #37603

25/07/2003

0

Quero mandar fichas de clientes do cobrador origem para o cobrador destino, porem um numero x.

update cliente
set cod_cob = :cobdestino
where cod_cob= :coborigem

Porem nem todos apenas uma quantidade informada (X)

tive informação para que fizesse uma subconsulta usando a clausula first mas deu erro no sql ...

Uso o Interbase 6.0 dialect 3

Como fazer isto ?


Midas

Midas

Responder

Posts

25/07/2003

Afarias

o Interbase 6.0 não possui a cláusula FIRST.

Entretanto, pode fazer isto com um StoredProcedure, ex:

for select <campo_chave> from cliente
where cod_cob = :cob_origem
into :valor_chave do
if (num_updates < max_updates) then
begin
num_updates = num_updates + 1;
update cliente set cod_cob = :cobdestino
where <campo_chave>= :valor_chave;
end
else
exit;


T+


Responder

Gostei + 0

25/07/2003

Midas

Afarias, estou começando agora com o interbase ... e gostaria de saber como fazer esta SP citada acima ? Me ajuda nessa !


Responder

Gostei + 0

25/07/2003

Midas

o Interbase 6.0 não possui a cláusula FIRST. Entretanto, pode fazer isto com um StoredProcedure, ex: for select <campo_chave> from cliente where cod_cob = :cob_origem into :valor_chave do if (num_updates < max_updates) then begin num_updates = num_updates + 1; update cliente set cod_cob = :cobdestino where <campo_chave>= :valor_chave; end else exit; T+

create procedure Trans_cliencob
for select cod_clien
from cliente
where cod_cob = :cob_origem
into cod_cob do
if (num_updates < :quant) then
begin
num_updates = num_updates + 1;
update cliente
set cod_cob = :cobdestino
where cod_cob = :codorigem;
end
else
exit;
seria mais ou menos assim... como eu passaria os parametros ?


Responder

Gostei + 0

25/07/2003

Afarias

|Afarias, estou começando agora com o interbase ... e gostaria de saber
|como fazer esta SP citada acima ? Me ajuda nessa !

Hummm... recomendo q leia sobre o SQL do Interbase para aproveitar todo o seu poder.

segue o ex abaixo (assumindo q sua tabela cliente tem um campo codigo integer)::


set term ^;

create procedure pr_muda_cob(cob_origem integer, cob_destino integer, max_updates integer) as
declare variable num_updates integer;
declare variable cod_cli integer;
begin
num_updates = 0;
for select codigo from cliente
where cod_cob = :cob_origem
into :cod_cli do
if (num_updates < max_updates) then
begin
num_updates = num_updates + 1;
update cliente set cod_cob = :cob_destino
where codigo = :cod_cli;
end
else
exit;
end^


depois é só executar o procedure:

execute procedure pr_muda_cob(1, 2, 10);

para mudar 10 clientes do cob. 1 para o cob. 2


T+


Responder

Gostei + 0

25/07/2003

Midas

vou pesquisar sobre SP, valeu ....
mas se tiver um link pra me ajudar pode postar aqui ... valeu mesmo ...


Responder

Gostei + 0

25/07/2003

Afarias

Para informações rápidas consulte o ´SQL Reference Help´ que é instalado com o IB.

Más, para um guia de referência completo, sugiro que leia o ´Interbase 6.0 Language Reference´ que faz parte da documentação do IB e pode ser baixado no link:

http://www.ibphoenix.com/downloads/60LangRef.zip


T+


Responder

Gostei + 0

26/07/2003

Midas

Agradeço pela informação....

Muito Grato ....


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar