Fórum tenho que atualizar os primeiro 50 registros de um select #37603
25/07/2003
0
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
Curtir tópico
+ 0Posts
25/07/2003
Afarias
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+
Gostei + 0
25/07/2003
Midas
Gostei + 0
25/07/2003
Midas
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 ?
Gostei + 0
25/07/2003
Afarias
|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+
Gostei + 0
25/07/2003
Midas
mas se tiver um link pra me ajudar pode postar aqui ... valeu mesmo ...
Gostei + 0
25/07/2003
Afarias
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+
Gostei + 0
26/07/2003
Midas
Muito Grato ....
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)