Estou com um problema numa stored procucedure t-sql do sybase, mas é muito parecido com t-sql da microsoft.
A procedure deveria a cada alteração de produto , zerar um contador e recomeçar a montagem de data, a partir de 01.01.1900.
Veja o trecho que está dando problema no cursor:
/*Data Início Vigência*/
if @cd_prod <> @cd_prod_old
begin
select @cd_prod_old = @cd_prod
select @contador = 1
select @dt_ini_vig_prod = '01.01.1900'
end
else
begin
select @contador = @contador + 1
if datalength(convert(varchar(2),@contador)) = 1
select @dt_ini_vig_prod = '0' + convert(varchar(2),@contador) + '.01.1900'
else
select @dt_ini_vig_prod = convert(varchar(2),@contador) + '.01.1900'
end
update #ba60_ba30_prod_t
set
dt_ini_vig_prod = @dt_ini_vig_prod
where
(cd_ps = @cd_prod_old) and
(tp_clc_prst = @tp_clc_prst) and
(cd_ind_cm_sld_dvr = @cd_ind_cm_sld_dvr) and
(pc_desc_prod = @pc_desc_prod)
Só está me atualizando os 2 primeiros produtos:
cd_ps tp_clc_prst cd_ind_cm_sld_dvr pc_desc_prod dt_ini_vig_prod
----------- ----------- ----------------- ------------ ---------------
195 13 0 0.00 01.01.1900
195 1 511 0.00 02.01.1900
Estou há mais de 3 horas vendo isto e não resolvo!!!!!


Alguém já passou por isto ?? Alguma dica de como resolver ????
Observo que eu uso cursores e tabelas temporárias.
Estou tratando campos que vem valor nulo.
Enfim, estou usando todas boas práticas de programação, mas isto não está saindo

.
Stored procedure completa e resultados seguem em anexo.
http://www.vilmarbro.com.br/cartoes_tele/f_9999_resultado_proc.zipGrato.