VB 6 num recebe retorno correto de PROC com UPDATE??
Algum macete ??
No Sybase faz certinho, mas no VB 6 o campo é recebido sem o UPDATE na tabela no campo DT_INICIO_VIGENCIA temporária.
Eu uso ADO com ODBC, Sybase 11.
Algum macete ??? Alguma dica ?? Alguém já passou por isto ????
Vejam PROC:
create proc migra_001
as
select distinct
ba60.cd_ps,
ba60.tp_clc_prst,
ba60.cd_ind_cm_sld_dvr,
pc_desc_prod = isnull(ba60.pc_desc_prod,0),
dt_inicio_vigencia = replicate(' ',10)
into
#ba60_ba30_prod_t
from
ba60_cnt_opds ba60,
bd30_tp_clc_prst ba30
where
(ba60.tp_clc_prst = ba30.tp_clc_prst)
group by
ba60.cd_ps,
ba60.tp_clc_prst,
ba60.cd_ind_cm_sld_dvr,
ba60.pc_desc_prod
order by
ba60.cd_ps
/*********************************
Declara variáveis.
Obs.: campo_p = sufixo para indicar que a variável esta sendo usado no cursor de produtos.
No cursor os campos tem o mesmo
tipo das tabelas de onde os dados são extraídos.
**********************************/
declare
@cd_ps_p int,
@tp_clc_prst_p int,
@cd_ind_cm_sld_dvr_p int,
@pc_desc_prod_p decimal(3,2),
@cd_ps_old_p int,
@dt_inicio_vigencia_p datetime,
@msgret varchar(100),
@codret int
begin tran
/*********************************
Declara o cursor a ser utilizado
**********************************/
declare cur_ba60_ba30_prod cursor for
select
cd_ps,
tp_clc_prst,
cd_ind_cm_sld_dvr,
pc_desc_prod
from
#ba60_ba30_prod_t
order by
cd_ps
for read only
/*********************************
Abre e lê primeiro registro do cursor
**********************************/
open cur_ba60_ba30_prod
fetch cur_ba60_ba30_prod
into
@cd_ps_p,
@tp_clc_prst_p,
@cd_ind_cm_sld_dvr_p,
@pc_desc_prod_p
/*********************************
Verifica se ainda existe registros a serem percorridos no cursor
**********************************/
while @@sqlstatus <> 2
begin
if @@sqlstatus = 1
begin
rollback tran
select @msgret = 'Procedure executada com ERRO. Problemas no cursor cur_ixdt001.'
select @codret = -34
return -34
end
/*Data Início Vigência*/
if @cd_ps_p <> @cd_ps_old_p
begin
select @cd_ps_old_p = @cd_ps_p
select @dt_inicio_vigencia_p = convert(datetime,'01.01.1900')
end
else
begin
select @dt_inicio_vigencia_p = dateadd(day, 1, @dt_inicio_vigencia_p)
end
update #ba60_ba30_prod_t
set
dt_inicio_vigencia = @dt_inicio_vigencia_p --'TESTE'
where
(cd_ps = @cd_ps_old_p) and
(tp_clc_prst = @tp_clc_prst_p) and
(cd_ind_cm_sld_dvr = @cd_ind_cm_sld_dvr_p) and
(pc_desc_prod = @pc_desc_prod_p)
commit tran
if @@transtate = 2 or @@transtate = 3
begin
rollback tran
select @msgret = 'Executada com ERRO. Problemas ao atualizar #ixdt001_t.'
select @codret = -10
return -10
end
/*********************************
Lê próximo registro do cursor
**********************************/
fetch cur_ba60_ba30_prod
into
@cd_ps_p,
@tp_clc_prst_p,
@cd_ind_cm_sld_dvr_p,
@pc_desc_prod_p
end
commit tran
close cur_ba60_ba30_prod
deallocate cursor cur_ba60_ba30_prod
select
cd_ps as cd_ps_f,
dt_inicio_vigencia as dt_ini_vig_f
from
#ba60_ba30_prod_t
order by
cd_ps
Pergunta
vilmarbr
VB 6 num recebe retorno correto de PROC com UPDATE??
Algum macete ??
No Sybase faz certinho, mas no VB 6 o campo é recebido sem o UPDATE na tabela no campo DT_INICIO_VIGENCIA temporária.
Eu uso ADO com ODBC, Sybase 11.
Algum macete ??? Alguma dica ?? Alguém já passou por isto ????
Vejam PROC:
----
GRATO !!
Editado por kuroiAdicionar tag CODE
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.