Autor
|
Tema: Error procedimiento almacenado no lo puedo sacar!! (Leído 1,655 veces)
|
crisoof
Desconectado
Mensajes: 48
|
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 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
Mensajes: 48
|
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 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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
llamar Procedimiento Almacenado
Programación Visual Basic
|
juanjoxx
|
0
|
1,479
|
9 Septiembre 2008, 05:23 am
por juanjoxx
|
|
|
error al crear procedimiento almacenado en MySQL [SOLUCIONADO]
Bases de Datos
|
KandiZickZad
|
6
|
11,682
|
12 Octubre 2010, 20:32 pm
por KandiZickZad
|
|
|
tabla temporal en procedimiento almacenado
Bases de Datos
|
OssoH
|
0
|
3,640
|
21 Noviembre 2012, 21:58 pm
por OssoH
|
|
|
Llamar un procedimiento almacenado PL desde PHP.
Desarrollo Web
|
Saberuneko
|
7
|
5,942
|
21 Marzo 2014, 12:52 pm
por Saberuneko
|
|
|
Problemas con procedimiento almacenado en mysql
Bases de Datos
|
3n31ch
|
1
|
3,001
|
11 Septiembre 2015, 03:18 am
por 0roch1
|
|