Publicidad:
Terra
La Coctelera

Transacciones en un Procedimiento Almacenado

CREATE PROCEDURE [sp_Procedimiento]

   @V1 VARCHAR(2),

   @DesError VARCHAR(100) OUTPUT

AS

BEGIN

--------------------------- EMPEZAMOS TRANSACCIÓN ----------------------------

declare @TipoTransaccion char(1)

if @@TRANCOUNT= 0     ' -- Si no hay transacción activa, crear una nueva

   BEGIN

      BEGIN TRANSACTION NombreTransaccion

      SET @TipoTransaccion = 'B'

   END

else       '  --- Si hay transaccion creamos un punto de guardado (para deshacer solo hasta ese punto)

   BEGIN

      SAVE TRANSACTION NombreTransaccion

      SET @TipoTransaccion = 'S'

   END

   INSERT INTO NombreTabla (Campo1, campo2) VALUE (Valor1, Valor2) 

   if @@ERROR <> 0

      BEGIN

           Select @DesError = 'Error ' + convert(varchar, @@ERROR) + ', al insertar un registro'

           GOTO TratarElError

     END

 .....................

......................

IF @TipoTransaccion='B'

COMMIT TRANSACTION NombreTransaccion

' Rechazamos la Transaccion

IF @@ERROR<>0 -- Ha habido errores

BEGIN

TratarElError:

-- Si se trata de una nueva transaccin la deshará completamente, si es un punto de guardado solo deshará hasta ese punto.

ROLLBACK TRANSACTION NombreTransaccion

END

END

 

 

Crear una Tabla de una select

SELECT Campo1, Campo2 into #TablaACrear FROM NombreTabla WHERE ............

Cursor en T-SQL

Declare @c1 bigint

DECLARE @c2 VARCHAR

DECLARE @c3 VARCHAR

DECLARE MiCursor CURSOR FOR

Select c1, c2, c3 from Tabla order by c1

OPEN MiCursor

FETCH MiCursor INTo @c1, @c2, @c3 

WHILE @@FETCH_STATUS=0

   BEGIN

        ' Operaciones que se deseen

       FETCH MiCursor INTo @c1, @c2, @c3 

   END

CLOSE MiCurosr

DEALLOCATE MiCursor

Formato numérico en un text box

Dim _Total as double

TbTotal.text = _Total.ToString("#,##0.00;-#,##0.00;0")

Procedimiento Almacenado para un Mantenimiento de Una tabla

USE [NombreEsquema]

GO

/**** Object: StoredProcedure [dbo].[sp_Tabla_mant] Script Date: 20/08/2010  16:15:26 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- ==================================================================================

-- Author: Sr. Bacatazo

-- Create date: 20/08/2010

-- Descripción: Mantenimiento de Tabla

-- Parámetros: DesError: descripcion del error si se produce

-- =============================================

alter PROCEDURE [dbo].[sp_Tabla_mant]

@Accion tinyint,

@Columna1 varchar(2),

@Columna2 varchar(2),

@Columna3 varchar(4),

@Operador    varchar(10),

@DesError varchar(100) output

AS

BEGIN

set @DesError = ''

--Añadir Registro en la Tabla

if @Accion = 1

begin

BEGIN TRAN

INSERT into dbo.Tabla

(Columna1, Columna2, Columna3, Operador, fechadeProceso)

VALUES (@Columna1, @ Columna2, @ Columna3, @Operador, CONVERT(VARCHAR, getdate(), 111))

if @@ERROR <> 0

begin

select @DesError = 'Error ' + convert(varchar, @@ERROR) + ': No se pudo crear el registro ‘

ROLLBACK

return 99

end

COMMIT TRAN

end

--Eliminar Registro

if @Accion = 2

begin

-- Comienzo transaccion

BEGIN TRAN

Delete from dbo.Tabla Where Columna1 = @Columna1

if @@ERROR <> 0

begin

select @DesError = 'Error ' + convert(varchar, @@ERROR) + ': al el registro.'

ROLLBACK

return 99

end

COMMIT TRAN

end

--Modificar Registro

if @Accion = 3

begin

BEGIN TRAN

Update dbo.Tabla set Columna2 = @Columna2, Columna3 = @Columna3, operador = @Operador, fechaproceso = CONVERT(VARCHAR, getdate(), 111)

where Columna1 = @Columna1

if @@ERROR <> 0

begin

select @DesError = 'Error ' + convert(varchar, @@ERROR) + ': al actualizar el registro'

ROLLBACK

return 99

end

                                COMMIT TRAN

end

--Todo OK

return 0

END