ayuda "Gustavo Larriera"

21/08/2003 - 01:09 por luis alfonso | Informe spam
Gustavo Que pena. tenes razon, si vas a ayudar, debes
conocer todo el problema, de pronto peque de superficial.

si tienes una sugerencia que hacerme en cuanto a la forma
de montar Procedimientos almacenados mas optima que esta,
con gusto te las acepto.

CREATE procedure mpsp_constancia @cedul varchar(11),@doc
varchar(15),@usuario varchar(15),@campana varchar(6)
As

/*Declare @numdoc varchar(10)*/
Declare @skucons varchar(5)
/*Declare @campana varchar(6)*/
Declare @nivel int
Declare @cantidad int
Declare @Qpremio varchar(1)
Declare @prg int
Declare @Nrocamp int
Declare @combo int
Declare @codcombo varchar(5)
Declare @strcodlin varchar(5)
Declare @cant int
Declare @ubc varchar(5)
Declare @reg varchar(10)

exec mpsp_procesaConstanciaR @cedul,@Qpremio output,@prg
output,@Nrocamp output

/*select @campana=strcampanaActualpedidos from
tblparametros*/

if @Qpremio='0'
Begin
select @skucons=strcodpremio,@combo=intcombo
from mpv_codigoconstancia where intprograma=@prg
and intconscampa=@Nrocamp
if (select sum(intconjunto) from tbl_peddet where
strnumdoc=@doc and strtipdoc='PD')>0
Begin
insert into tbl_pdc_segConstancia
(strcodter,strcamgen,strnumdoc,intnivel,strcodlin,lngcan,ln
gcanent)
values
(@cedul,@campana,@doc,@Nrocamp,@skucons,1,0)

select @reg=id from tbl_pdc_segConstancia
where strcodter=@cedul and
strcamgen=@campana
and strcodlin=@skucons

if @combo=2
Begin
Declare Cursorcombo cursor scroll
for
select
strcodcombo,strcodlin,intcan,strubicacionp
from mpv_combocampana
where strcodcombo=@combo and
strcampana=@campana
Open cursorcombo
fetch first from cursorcombo into
@codcombo,@strcodlin,@cant,@ubc
While (@@fetch_status<>-1)
Begin
if(select count(strcodlin)
from tbl_peddet where strcodlin=@strcodlin and
stratributo='T' and strnumdoc=@doc)=0
INSERT into tbl_PedDet(
strTipDoc,
strNumDoc,
strCodCombo,
strCodLin,
lngCan,
lngCanAsg,
strUbcA,
curPrecio,
strAtributo,
strReg,
strUsuario,
strUbcB,
intconjunto,
lngcandev)
VALUES ('PD',
@doc,
@CodCombo,
@strcodlin,
@cant,
0,
@ubc,
0,
'T',
@Reg,
@Usuario,
'Combo',
0,
0)
Fetch next from
cursorcombo into @codcombo,@strcodlin,@cant
IF @@ERROR <> 0
BEGIN
/*PRINT "Un Error
Ocurrio Recuperando una Fila del Cursor"*/
Raiserror ('Un Error
Ocurrio Recuperando una Fila del Cursor',16,1)
RETURN(99)
END

End
Close cursorcombo
Deallocate cursorcombo
End
Else
Begin
Set @CodCombo=''
Select @ubc=strubicacionp from
mpv_sku where strcodlin=@skucons
if(select count(strcodlin) from
tbl_peddet where strcodlin=@skucons and stratributo='T'
and strnumdoc=@doc)=0
INSERT into tbl_PedDet(
strTipDoc,
strNumDoc,
strCodCombo,
strCodLin,
lngCan,
lngCanAsg,
strUbcA,
curPrecio,
strAtributo,
strReg,
strUsuario,
strUbcB,
intconjunto,
lngcandev)
VALUES ('PD',
@doc,
@CodCombo,
@skucons,
1,
0,
@ubc,
0,
'T',
@Reg,
@Usuario,
'NoCom',
0,
0)
End
End
End
GO

CREATE PROCEDURE mpsp_ProcesaConstanciaR @cedula Varchar
(11),@RQueAccion varchar(1) output,@Rprmprg int
output,@Rnrocamp int output

AS

Declare @CmpAct varchar(6)
Declare @CampaNomb varchar(6)
Declare @prmprg int
Declare @nrocamp int
Declare @QueAccion varchar(1)
Declare @maxnivel int
Declare @difcons int

/*set @CmpAct=''
set @CampaNomb=''
set @maxnivel=0
set @nrocamp=0
set @difcons=0
set @QueAccion=''*/

set @CmpAct=(select strCampanaActualPedidos from
tblparametros)
exec @CampaNomb=mpsp_campanomb @cedula

/** Se vió la necesidad de ignorar el campo strcampananom
de tblterceros dado que a veces los nombramientos de la
primer area de facturación de cada
campaña se hacen sin haber cerrado la campaña anterior y
la fidelidad de este dato es primordial para este proceso;
por esta razon se recurre al PA(mpsp_campanomb) para
consultar la campaña de nombramiento de la Asesora**/

set @prmprg=(select intprograma from tblprgconstancia
where @CampaNomb between strcampinicia and strcampfinal
and bitactivo=1)
if isnull(@prmprg,'0')<>'0'
Begin
set @maxnivel =(select intniveles from
tblprgconstancia where @CampaNomb between strcampinicia
and strcampfinal)
set @nrocamp=(select count(strcodca)+1
from tbldoc where strcodca=@cedula and strtipdoc='FC' and
strcamgen between @CampaNomb and @CmpAct)
set @difcons=(select (intconsec-(select
intconsec from tblcampaña where strcampaña=@CampaNomb))+1
from tblcampaña where
strcampaña=@CmpAct)

if @difcons=@nrocamp
Begin
set @QueAccion = (select
strtipoacion from tbldetconstancia where
intprograma=@prmprg and intconscampa=@nrocamp)
End
else
set @QueAccion='X'
End
else
set @QueAccion='X'
/*select @QueAccion as premio, @prmprg as
programa,@nrocamp as campanas,@maxnivel as nivel_final*/
select
@RQueAccion=@QueAccion,@Rprmprg=@prmprg,@Rnrocamp=@nrocamp
GO

CREATE PROCEDURE mpsp_CampaNomb @ced varchar(11) AS

DECLARE @MINCAM VARCHAR(6)
DECLARE @MAXCAM VARCHAR(6)
DECLARE @CAMPACT VARCHAR(6)
DECLARE @DIFCAM INT

SET @MINCAM=(SELECT MIN(STRCAMGEN) FROM TBLDOC WHERE
STRTIPDOC='FC' AND STRCODCA=@CED)
SET @MAXCAM=(SELECT MAX(STRCAMGEN) FROM TBLDOC WHERE
STRTIPDOC='FC' AND STRCODCA=@CED)
SET @CAMPACT=(SELECT STRCAMPANAACTUALPEDIDOS FROM
TBLPARAMETROS)

set @DIFCAM=(select (intconsec-(select 1+intconsec from
tblcampaña where strcampaña=@MAXCAM))
from tblcampaña where
strcampaña=@CAMPACT)

IF ISNULL(@MINCAM,0) = 0
BEGIN
SET @MINCAM =(SELECT STRCAMPANANOM FROM
MPV_NOMBRAMIENTOS_CAMPAÑA WHERE STRCODIGO=@CED)
IF ISNULL(@MINCAM,0)=0
SET @MINCAM='000000'
END
ELSE
BEGIN
IF @DIFCAM>18
SET @MINCAM= @CAMPACT
END
RETURN @MINCAM


GO
 

Leer las respuestas

#1 Gustavo Larriera [MVP]
21/08/2003 - 05:18 | Informe spam
No pude encontrar nada raro a simple vista, estaba buscando alguna sentencia
que modificara el esquema de la base de datos pero no encontré algo así en
tu código.

Buscando en la KB encontré una sola ocurrencia del error en:
http://support.microsoft.com/defaul...-us;232522

No sé si aplica a tu caso, pues se refiere a SQL 7.0 y con replicación de
datos involucrada en el problema.

Gustavo Larriera, MSFT MVP-SQL
Uruguay LatAm

This message is provided "AS IS" with no warranties expressed or implied,
and confers no rights.


"luis alfonso" wrote in message
news:04a601c36770$23eb3100$

Gustavo Que pena. tenes razon, si vas a ayudar, debes
conocer todo el problema, de pronto peque de superficial.

si tienes una sugerencia que hacerme en cuanto a la forma
de montar Procedimientos almacenados mas optima que esta,
con gusto te las acepto.

CREATE procedure mpsp_constancia @cedul varchar(11),@doc
varchar(15),@usuario varchar(15),@campana varchar(6)
As

/*Declare @numdoc varchar(10)*/
Declare @skucons varchar(5)
/*Declare @campana varchar(6)*/
Declare @nivel int
Declare @cantidad int
Declare @Qpremio varchar(1)
Declare @prg int
Declare @Nrocamp int
Declare @combo int
Declare @codcombo varchar(5)
Declare @strcodlin varchar(5)
Declare @cant int
Declare @ubc varchar(5)
Declare @reg varchar(10)

exec mpsp_procesaConstanciaR @cedul,@Qpremio output,@prg
output,@Nrocamp output

/*select @campana=strcampanaActualpedidos from
tblparametros*/

if @Qpremio='0'
Begin
select @skucons=strcodpremio,@combo=intcombo
from mpv_codigoconstancia where intprograma=@prg
and intconscampa=@Nrocamp
if (select sum(intconjunto) from tbl_peddet where
strnumdoc=@doc and strtipdoc='PD')>0
Begin
insert into tbl_pdc_segConstancia
(strcodter,strcamgen,strnumdoc,intnivel,strcodlin,lngcan,ln
gcanent)
values
(@cedul,@campana,@doc,@Nrocamp,@skucons,1,0)

select @reg=id from tbl_pdc_segConstancia
where strcodter=@cedul and
strcamgen=@campana
and strcodlin=@skucons

if @combo=2
Begin
Declare Cursorcombo cursor scroll
for
select
strcodcombo,strcodlin,intcan,strubicacionp
from mpv_combocampana
where strcodcombo=@combo and
strcampana=@campana
Open cursorcombo
fetch first from cursorcombo into
@codcombo,@strcodlin,@cant,@ubc
While (@@fetch_status<>-1)
Begin
if(select count(strcodlin)
from tbl_peddet where strcodlin=@strcodlin and
stratributo='T' and strnumdoc=@doc)=0
INSERT into tbl_PedDet(
strTipDoc,
strNumDoc,
strCodCombo,
strCodLin,
lngCan,
lngCanAsg,
strUbcA,
curPrecio,
strAtributo,
strReg,
strUsuario,
strUbcB,
intconjunto,
lngcandev)
VALUES ('PD',
@doc,
@CodCombo,
@strcodlin,
@cant,
0,
@ubc,
0,
'T',
@Reg,
@Usuario,
'Combo',
0,
0)
Fetch next from
cursorcombo into @codcombo,@strcodlin,@cant
IF @@ERROR <> 0
BEGIN
/*PRINT "Un Error
Ocurrio Recuperando una Fila del Cursor"*/
Raiserror ('Un Error
Ocurrio Recuperando una Fila del Cursor',16,1)
RETURN(99)
END

End
Close cursorcombo
Deallocate cursorcombo
End
Else
Begin
Set @CodCombo=''
Select @ubc=strubicacionp from
mpv_sku where strcodlin=@skucons
if(select count(strcodlin) from
tbl_peddet where strcodlin=@skucons and stratributo='T'
and strnumdoc=@doc)=0
INSERT into tbl_PedDet(
strTipDoc,
strNumDoc,
strCodCombo,
strCodLin,
lngCan,
lngCanAsg,
strUbcA,
curPrecio,
strAtributo,
strReg,
strUsuario,
strUbcB,
intconjunto,
lngcandev)
VALUES ('PD',
@doc,
@CodCombo,
@skucons,
1,
0,
@ubc,
0,
'T',
@Reg,
@Usuario,
'NoCom',
0,
0)
End
End
End
GO

CREATE PROCEDURE mpsp_ProcesaConstanciaR @cedula Varchar
(11),@RQueAccion varchar(1) output,@Rprmprg int
output,@Rnrocamp int output

AS

Declare @CmpAct varchar(6)
Declare @CampaNomb varchar(6)
Declare @prmprg int
Declare @nrocamp int
Declare @QueAccion varchar(1)
Declare @maxnivel int
Declare @difcons int

/*set @CmpAct=''
set @CampaNomb=''
set @maxnivel=0
set @nrocamp=0
set @difcons=0
set @QueAccion=''*/

set @CmpAct=(select strCampanaActualPedidos from
tblparametros)
exec @CampaNomb=mpsp_campanomb @cedula

/** Se vió la necesidad de ignorar el campo strcampananom
de tblterceros dado que a veces los nombramientos de la
primer area de facturación de cada
campaña se hacen sin haber cerrado la campaña anterior y
la fidelidad de este dato es primordial para este proceso;
por esta razon se recurre al PA(mpsp_campanomb) para
consultar la campaña de nombramiento de la Asesora**/

set @prmprg=(select intprograma from tblprgconstancia
where @CampaNomb between strcampinicia and strcampfinal
and bitactivo=1)
if isnull(@prmprg,'0')<>'0'
Begin
set @maxnivel =(select intniveles from
tblprgconstancia where @CampaNomb between strcampinicia
and strcampfinal)
set @nrocamp=(select count(strcodca)+1
from tbldoc where strcodca=@cedula and strtipdoc='FC' and
strcamgen between @CampaNomb and @CmpAct)
set @difcons=(select (intconsec-(select
intconsec from tblcampaña where strcampaña=@CampaNomb))+1
from tblcampaña where
strcampaña=@CmpAct)

if @difcons=@nrocamp
Begin
set @QueAccion = (select
strtipoacion from tbldetconstancia where
intprograma=@prmprg and intconscampa=@nrocamp)
End
else
set @QueAccion='X'
End
else
set @QueAccion='X'
/*select @QueAccion as premio, @prmprg as
programa,@nrocamp as campanas,@maxnivel as nivel_final*/
select
@RQueAccion=@QueAccion,@Rprmprg=@prmprg,@Rnrocamp=@nrocamp
GO

CREATE PROCEDURE mpsp_CampaNomb @ced varchar(11) AS

DECLARE @MINCAM VARCHAR(6)
DECLARE @MAXCAM VARCHAR(6)
DECLARE @CAMPACT VARCHAR(6)
DECLARE @DIFCAM INT

SET @MINCAM=(SELECT MIN(STRCAMGEN) FROM TBLDOC WHERE
STRTIPDOC='FC' AND STRCODCA=@CED)
SET @MAXCAM=(SELECT MAX(STRCAMGEN) FROM TBLDOC WHERE
STRTIPDOC='FC' AND STRCODCA=@CED)
SET @CAMPACT=(SELECT STRCAMPANAACTUALPEDIDOS FROM
TBLPARAMETROS)

set @DIFCAM=(select (intconsec-(select 1+intconsec from
tblcampaña where strcampaña=@MAXCAM))
from tblcampaña where
strcampaña=@CAMPACT)

IF ISNULL(@MINCAM,0) = 0
BEGIN
SET @MINCAM =(SELECT STRCAMPANANOM FROM
MPV_NOMBRAMIENTOS_CAMPAÑA WHERE STRCODIGO=@CED)
IF ISNULL(@MINCAM,0)=0
SET @MINCAM='000000'
END
ELSE
BEGIN
IF @DIFCAM>18
SET @MINCAM= @CAMPACT
END
RETURN @MINCAM


GO

Preguntas similares