tenho que atualizar os primeiro 50 registros de um select
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 ?
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
Curtidas 0
Respostas
Afarias
25/07/2003
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+
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
Midas
25/07/2003
Afarias, estou começando agora com o interbase ... e gostaria de saber como fazer esta SP citada acima ? Me ajuda nessa !
GOSTEI 0
Midas
25/07/2003
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 ?
GOSTEI 0
Afarias
25/07/2003
|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+
|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
Midas
25/07/2003
vou pesquisar sobre SP, valeu ....
mas se tiver um link pra me ajudar pode postar aqui ... valeu mesmo ...
mas se tiver um link pra me ajudar pode postar aqui ... valeu mesmo ...
GOSTEI 0
Afarias
25/07/2003
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+
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
Midas
25/07/2003
Agradeço pela informação....
Muito Grato ....
Muito Grato ....
GOSTEI 0