Jajaja te estoy cargando Pancho!! Abrazo
Alejandro. De: [email protected] [mailto:[email protected]] En nombre de francisco prieto Enviado el: Jueves, 19 de Julio de 2012 06:23 p.m. Para: GUFA List Member Asunto: [GUFA] OFF TOPIC Procedimientos almacenados Ud tiene razon!! Marche preso... Pancho El 19 de julio de 2012 18:04, Alejandro, Newbery <[email protected]> escribió: Si, pero el enunciado era Necesito que si el primer procedimiento no se ejecuta no haga el segundo. ¿Se podrá hacer esto sin tener que poner un IF ? Saludos Alejandro. De: [email protected] [mailto:[email protected]] En nombre de francisco prieto Enviado el: Jueves, 19 de Julio de 2012 05:47 p.m. Para: GUFA List Member Asunto: [GUFA] OFF TOPIC Procedimientos almacenados Es cierto... pero funciona en cualquier version... Saludos, Pancho Cordoba El 19 de julio de 2012 17:13, Alejandro, Newbery <[email protected]> escribió: Pero en ese caso Pancho, debe utilizar un IF. Saludos Ale. De: [email protected] [mailto:[email protected]] En nombre de francisco prieto Enviado el: Jueves, 19 de Julio de 2012 04:32 p.m. Para: GUFA List Member Asunto: [GUFA] OFF TOPIC Procedimientos almacenados Podrias utilizar tambien un parametro adicional de salida para saber si se ejecuto o no... Simplemente inicializas una variable en 0 y dentro del procedimiento le colocas el valor 1.... Si posees un 1 entonces se ejecuto y seguis adelante. Algo asi... Set @Pudo=0; if @NoLoQuiero=1 begin Select @Pos=CharIndex(',',@ValoresAdm); Set @Resto=SUBSTRING(@ValoresAdm,@Pos+1,len(@ValoresAdm)-@Pos-1) Select @Pos=CharIndex('-',@Resto); Set @Auxiliar=SUBSTRING(@Resto,1,@Pos-1); Select @Llegada=CONVERT(datetime,@Auxiliar); Set @NroTurno=SUBSTRING(@Resto,@Pos+1,4); exec @Pudo= CheckIn 'OT',@Llegada,@NroTurno,@Actuante,@Pudo; Saludos, Pancho Cordoba El 19 de julio de 2012 15:54, Alejandro, Newbery <[email protected]> escribió: Seria mas o menos asi: CREATE PROCEDURE Procedimiento_2_Llamado_desde_Procedimiento_1 ( @parametro char(15)) AS begin set nocount on begin try -- Acciones a realizar -- Si alguna condición no se da, genero error con: raiserror( message, 16, 1) end try begin catch -- information to the caller. declare @ErrorMessage varchar(256); set @ErrorMessage = ERROR_MESSAGE(); raiserror(@ErrorMessage, -- Message text. 16, -- Severity. 1 -- State. ) return(1) end catch end GO CREATE PROCEDURE Procedimiento_1 ( @parametro char(15) ) AS BEGIN SET NOCOUNT ON BEGIN TRY BEGIN TRAN -- Si esta linea genera un error, salta al begin catch, sin ejecutar el insert exec Procedimiento_2_Llamado_desde_Procedimiento_1 @parametro INSERT INTO . COMMIT TRAN END TRY BEGIN CATCH -- rollback transaction if (@@trancount > 0) rollback tran -- After the appropriate rollback, echo error information to the caller. declare @ErrorMessage varchar(256); set @ErrorMessage = ERROR_MESSAGE() raiserror(@ErrorMessage, 16, 1) return(1) END CATCH END GO Saludos Alejandro. De: [email protected] [mailto:[email protected]] En nombre de Alejandro Paciotti Iacchelli Enviado el: Jueves, 19 de Julio de 2012 03:38 p.m. Para: GUFA List Member Asunto: [GUFA] OFF TOPIC Procedimientos almacenados Gracias Alejandro, ¿tendrás un ejemplo como para tirarme un punta? De: [email protected] [mailto:[email protected]] En nombre de Alejandro, Newbery Enviado el: jueves, 19 de julio de 2012 03:35 p.m. Para: GUFA List Member Asunto: [GUFA] OFF TOPIC Procedimientos almacenados Lo podes hacer con manejo de error estructurado, pero a partir del sql 2005. Saludos Alejandro. De: [email protected] [mailto:[email protected]] En nombre de Alejandro Paciotti Iacchelli Enviado el: Jueves, 19 de Julio de 2012 12:47 p.m. Para: GUFA List Member Asunto: [GUFA] OFF TOPIC Procedimientos almacenados Estimados: tengo un procedimiento almacenado en SQL SERVER que tiene 2 instrucciones, en la primera llama a otro procedimiento y en la segunda hace un INSERT, DELETE o UPDATE. Necesito que si el primer procedimiento no se ejecuta no haga el segundo. ¿Se podrá hacer esto sin tener que poner un IF ? Pego algo del código a modo de ejemplo: ALTER PROCEDURE [dbo].[SP_ALTA_VariacionIndices] @CodigoVariacion VARCHAR(15), @CodigoIndice VARCHAR(15), @Tasa Numeric(16,4), @CodigoUsuario VARCHAR(15) AS BEGIN SET NOCOUNT ON; EXECUTE SP_ALTA_Novedades 00001 ,@CodigoUsuario ,VARIACIONINDICES INSERT INTO VariacionIndices (CodigoIndice,CodigoVariacion,Tasa, FechaAplicacion) VALUES (@CodigoIndice,@CodigoVariacion,@Tasa,@FechaAplicacion) END Agradecido de antemano!
