elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Error procedimiento almacenado no lo puedo sacar!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error procedimiento almacenado no lo puedo sacar!!  (Leído 256 veces)
crisoof

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Error procedimiento almacenado no lo puedo sacar!!
« en: 6 Agosto 2019, 20:47 pm »

Buenas tardes amiguetes!!

solicito su ayuda, tengo un error en un procedimiento almacenado en sql server, la falla radica en que no esta entranddo a realizar los insert, realiza los update y delete pero no los insert, porfavor si alguno me puede ayudar se lo agradeceria muchisimo, le he dado muchas vueltas y no tengo solucion
Código:
USE [Gestion]
GO
/****** Object:  StoredProcedure [dbo].[GES_Pre_Tienda_Guardar]    Script Date: 6/8/2019 12:10:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Cristofer Martinez
-- Create date: 05-08-2019
-- Description: Guarda GPC, Temporada y el ID log
-- =============================================
ALTER PROCEDURE [dbo].[GES_Pre_Tienda_Guardar]
@Cod_Tienda As Varchar(50),
@Ges_Pre_GPCTienda As Ges_Pre_GPCTienda Readonly,
@Ges_Pre_PorcTemporada As Ges_Pre_PorcTemporada Readonly,
@Status    As Integer OutPut
AS
BEGIN

SET NOCOUNT ON;

Declare @Error VarChar(500)
Declare @Id Varchar(50)
Begin Try
Begin Transaction
If not Exists( Select 1
From Gestion.dbo.Ges_Pre_PresupuestoTiendaGpc gpc With(Nolock)
Inner Join  @Ges_Pre_GPCTienda pre
On gpc.Id_PreTieGpc = pre.Id_PreTieGpc)
Begin
--Insert GPC
print ('insert gpc')
Insert Into Ges_Pre_PresupuestoTiendaGpc
(
Id_PreTieGpc, Cod_Tienda, Cod_Gpc, Presupuesto, Utilizado, Stock, Usuario, Fecha_Creacion, Estacion
)
Select gpc.Id_PreTieGpc, gpc.Cod_Tienda, gpc.Cod_Gpc, gpc.Presupuesto,0, gpc.Stock, gpc.Usuario,getdate(), gpc.Estacion
From @Ges_Pre_GPCTienda gpc
Where gpc.nuevo = 'S'

If @@ERROR <> 0
Begin
Set @Status = 0
Rollback Tran
Return @Status
End

SET @Status = 1
SET @Error = 'OK'
SELECT @Error AS ERROR
End
Else
Begin
--- Actualiza GPC
print('Update GPC')
UPDATE Ges_Pre_PresupuestoTiendaGpc
SET stock = gpc.Stock, Presupuesto = gpc.Presupuesto,
Fecha_Creacion = GETDATE(), Usuario = gpc.Usuario, Estacion = gpc.Estacion
FROM Ges_Pre_PresupuestoTiendaGpc c
INNER JOIN @Ges_Pre_GPCTienda gpc
ON c.Id_PreTieGpc = gpc.Id_PreTieGpc
Where gpc.nuevo = 'N'

If @@ERROR <> 0
Begin
Set @Status = 0
Rollback Tran
Return @Status
End

SET @Status = 1
SET @Error = 'OK'
SELECT @Error AS ERROR

End

If Not Exists( Select tem.Id_PreTemp
From Gestion.dbo.Ges_Pre_PorcentajeTemporada tem With(Nolock)
Inner Join  @Ges_Pre_PorcTemporada pre
On tem.Id_PreTemp = pre.Id_PreTemp)
Begin
---Insert temporada
print ('Insert temporada')
Insert into Gestion.dbo.Ges_Pre_PorcentajeTemporada
(
Id_PreTemp, Cod_Tienda,Cod_PreTemporada, Cod_PreAnual, Cod_Temporada, Porcentaje, Usuario, Fecha_Creacion, Estacion
)

Select Id_PreTemp, Cod_tienda, Cod_Pretemporada, Cod_PreAnual, Cod_Temporada, Descuento,  Usuario, GETDATE(), Estacion
From @Ges_Pre_PorcTemporada
Where Nuevo = 'S'

If @@ERROR <> 0
Begin
Set @Status = 0
Rollback Tran
Return @Status
End
End
Else
Begin
--- Borra temporada
print ('delete temporada')
Delete temp
From Gestion.dbo.Ges_Pre_PorcentajeTemporada temp
Left join @Ges_Pre_PorcTemporada pre
On temp.Id_PreTemp = pre.Id_PreTemp
Where pre.Id_PreTemp = null
And pre.Nuevo = 'N'

If @@ERROR <> 0
Begin
Set @Status = 0
Rollback Tran
Return @Status
End

SET @Status = 1
SET @Error = 'OK'
SELECT @Error AS ERROR

--- actualiza temporada
Print('Update Temporada')
Update temp
Set Porcentaje = pre.Descuento
From Gestion.dbo.Ges_Pre_PorcentajeTemporada Temp
Inner join @Ges_Pre_PorcTemporada pre
On Temp.Id_PreTemp = pre.Id_PreTemp
Where pre.Nuevo = 'N'

If @@ERROR <> 0
Begin
Set @Status = 0
Rollback Tran
Return @Status
End

SET @Status = 1
SET @Error = 'OK'
SELECT @Error AS ERROR

End
Print ('Insert ID')
--Insert Validacion Usuario
Insert into Ges_pre_log (Cod_tienda)
Values
(
@Cod_Tienda
)

If @@ERROR <> 0
Begin
Set @Status = 0
Rollback Tran
Return @Status
End

Commit Transaction
SET @Status = 1
SET @Error = 'OK'
SELECT @Error AS ERROR
RETURN @Status
End Try
Begin Catch
If @@TRANCOUNT > 0
Begin
SELECT ERROR_MESSAGE() AS ErrorMessage;
Rollback Transaction
Set @Status = 0
Set @Error = 'try'
--Print  @@Error
Select @Error AS ERROR
Return @Status
END
Else
Begin
SELECT ERROR_MESSAGE() AS ErrorMessage;
Set @Status = 0
Set @Error = 'try'
--Print  @@Error
Select @Error AS ERROR
Return @Status
End
End Catch   
END


Muchas gracias por su ayuda


En línea

crisoof

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Re: Error procedimiento almacenado no lo puedo sacar!!
« Respuesta #1 en: 6 Agosto 2019, 21:29 pm »

Buenas gente,

Dudo que el procedimiento les pueda servir pero quizas parte del codigo,

el problema esta en que el delete estaba haciendo algo que no queria y ademas movi el delete a un if por separado les copio el codigo algo de ahi quizas puedan reciclar


Código:
USE [Gestion]
GO
/****** Object:  StoredProcedure [dbo].[GES_Pre_Tienda_Guardar]    Script Date: 6/8/2019 12:10:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Cristofer Martinez
-- Create date: 05-08-2019
-- Description: Guarda GPC, Temporada y el ID log
-- =============================================
ALTER PROCEDURE [dbo].[GES_Pre_Tienda_Guardar]
@Cod_Tienda As Varchar(50),
@Ges_Pre_GPCTienda As Ges_Pre_GPCTienda Readonly,
@Ges_Pre_PorcTemporada As Ges_Pre_PorcTemporada Readonly,
@Status    As Integer OutPut
AS
BEGIN

SET NOCOUNT ON;

Declare @Error VarChar(500)
Declare @Id Varchar(50)
Begin Try
Begin Transaction
If not Exists( Select 1
From Gestion.dbo.Ges_Pre_PresupuestoTiendaGpc gpc With(Nolock)
Inner Join  @Ges_Pre_GPCTienda pre
On gpc.Id_PreTieGpc = pre.Id_PreTieGpc)
Begin
--Insert GPC
print ('insert gpc')
Insert Into Ges_Pre_PresupuestoTiendaGpc
(
Id_PreTieGpc, Cod_Tienda, Cod_Gpc, Presupuesto, Utilizado, Stock, Usuario, Fecha_Creacion, Estacion
)
Select gpc.Id_PreTieGpc, gpc.Cod_Tienda, gpc.Cod_Gpc, gpc.Presupuesto,0, gpc.Stock, gpc.Usuario,getdate(), gpc.Estacion
From @Ges_Pre_GPCTienda gpc
Where gpc.nuevo = 'S'

If @@ERROR <> 0
Begin
Set @Status = 0
Rollback Tran
Return @Status
End

SET @Status = 1
SET @Error = 'OK'
SELECT @Error AS ERROR
End
Else
Begin
--- Actualiza GPC
print('Update GPC')
UPDATE Ges_Pre_PresupuestoTiendaGpc
SET stock = gpc.Stock, Presupuesto = gpc.Presupuesto,
Fecha_Creacion = GETDATE(), Usuario = gpc.Usuario, Estacion = gpc.Estacion
FROM Ges_Pre_PresupuestoTiendaGpc c
INNER JOIN @Ges_Pre_GPCTienda gpc
ON c.Id_PreTieGpc = gpc.Id_PreTieGpc
Where gpc.nuevo = 'N'

If @@ERROR <> 0
Begin
Set @Status = 0
Rollback Tran
Return @Status
End

SET @Status = 1
SET @Error = 'OK'
SELECT @Error AS ERROR

End

If Not Exists( Select tem.Id_PreTemp
From Gestion.dbo.Ges_Pre_PorcentajeTemporada tem With(Nolock)
Inner Join  @Ges_Pre_PorcTemporada pre
On tem.Id_PreTemp = pre.Id_PreTemp)
Begin
---Insert temporada
print ('Insert temporada')
Insert into Gestion.dbo.Ges_Pre_PorcentajeTemporada
(
Id_PreTemp, Cod_Tienda,Cod_PreTemporada, Cod_PreAnual, Cod_Temporada, Porcentaje, Usuario, Fecha_Creacion, Estacion
)

Select Id_PreTemp, Cod_tienda, Cod_Pretemporada, Cod_PreAnual, Cod_Temporada, Descuento,  Usuario, GETDATE(), Estacion
From @Ges_Pre_PorcTemporada
Where Nuevo = 'S'

If @@ERROR <> 0
Begin
Set @Status = 0
Rollback Tran
Return @Status
End
End
Else
Begin

--- actualiza temporada
Print('Update Temporada')
Update temp
Set Porcentaje = pre.Descuento
From Gestion.dbo.Ges_Pre_PorcentajeTemporada Temp
Inner join @Ges_Pre_PorcTemporada pre
On Temp.Id_PreTemp = pre.Id_PreTemp
Where pre.Nuevo = 'N'

If @@ERROR <> 0
Begin
Set @Status = 0
Rollback Tran
Return @Status
End

SET @Status = 1
SET @Error = 'OK'
SELECT @Error AS ERROR

End
If 0< (Select Count(1)
From [dbo].[Ges_Pre_PorcentajeTemporada] t
Where t.Cod_tienda = @Cod_Tienda
And Not Exists (Select 1
From @Ges_Pre_PorcTemporada tmp
Where tmp.Id_PreTemp = t.Id_PreTemp))
Begin
--- Borra temporada
print ('delete temporada')
Delete tt From Ges_Pre_PorcentajeTemporada tt
Where tt.Cod_tienda = @Cod_Tienda
And Not Exists (Select 1
From @Ges_Pre_PorcTemporada tmp
Where tmp.Id_PreTemp = tt.Id_PreTemp
And tmp.Nuevo = 'N')


If @@ERROR <> 0
Begin
Set @Status = 0
Rollback Tran
Return @Status
End

SET @Status = 1
SET @Error = 'OK'
SELECT @Error AS ERROR
End
Print ('Insert ID')
--Insert Validacion Usuario
Insert into Ges_pre_log (Cod_tienda)
Values
(
@Cod_Tienda
)

If @@ERROR <> 0
Begin
Set @Status = 0
Rollback Tran
Return @Status
End


Commit Transaction
SET @Status = 1
SET @Error = 'OK'
SELECT @Error AS ERROR
RETURN @Status
End Try
Begin Catch
If @@TRANCOUNT > 0
Begin
SELECT ERROR_MESSAGE() AS ErrorMessage;
Rollback Transaction
Set @Status = 0
Set @Error = 'try'
--Print  @@Error
Select @Error AS ERROR
Return @Status
END
Else
Begin
SELECT ERROR_MESSAGE() AS ErrorMessage;
Set @Status = 0
Set @Error = 'try'
--Print  @@Error
Select @Error AS ERROR
Return @Status
End
End Catch   
END

Saludos


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
llamar Procedimiento Almacenado
Programación Visual Basic
juanjoxx 0 836 Último mensaje 9 Septiembre 2008, 05:23 am
por juanjoxx
error al crear procedimiento almacenado en MySQL [SOLUCIONADO]
Bases de Datos
KandiZickZad 6 9,819 Último mensaje 12 Octubre 2010, 20:32 pm
por KandiZickZad
tabla temporal en procedimiento almacenado
Bases de Datos
OssoH 0 2,769 Último mensaje 21 Noviembre 2012, 21:58 pm
por OssoH
Llamar un procedimiento almacenado PL desde PHP.
Desarrollo Web
Saberuneko 7 4,056 Último mensaje 21 Marzo 2014, 12:52 pm
por Saberuneko
Problemas con procedimiento almacenado en mysql
Bases de Datos
3n31ch 1 1,408 Último mensaje 11 Septiembre 2015, 03:18 am
por 0roch1
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines