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!