Transacciones - Doc - Sql Server

 
create database pruebaAnalisis;

go

use pruebaAnalisis;

go

create table Cliente(
IdCliente int primary key identity(1,1),
nombre varchar(30),
descripcion varchar(100)
);

Insert into Cliente (nombre, descripcion) values
('Mora','test', 'alvarez','test2');

select *from Cliente;

CREATE PROCEDURE obtenerClientes AS BEGIN
select *from Cliente;
END;

go

exec obtenerClientes;

---------------------------------------------------------------------------------

CREATE PROCEDURE insertarCliente
    @nombre VARCHAR(30),
    @descripcion VARCHAR(100)
AS
BEGIN
    BEGIN TRANSACTION;

    BEGIN TRY
        INSERT INTO Cliente (nombre, descripcion)
        VALUES (@nombre, @descripcion);

        -- Devuelve el ID del nuevo cliente insertado
        SELECT SCOPE_IDENTITY() AS NuevoClienteID;

        COMMIT TRANSACTION;
    END TRY

    BEGIN CATCH
        ROLLBACK TRANSACTION;

        -- Devuelve informaci�n del error
        SELECT ERROR_NUMBER() AS ErrorNumber,
               ERROR_MESSAGE() AS ErrorMessage;
    END CATCH;
END;

go

exec insertarCliente @nombre = 'rsarr', @descripcion = 'dsassa';

-------------------------------------------------------

CREATE PROCEDURE ActualizarCliente
    @IdCliente INT,
    @nombre VARCHAR(30),
    @descripcion VARCHAR(100)
AS
BEGIN
    -- Inicia la transacci�n
    BEGIN TRANSACTION;

    BEGIN TRY
        -- Actualiza la informaci�n del cliente
        UPDATE Cliente
        SET nombre = @nombre,
            descripcion = @descripcion
        WHERE IdCliente = @IdCliente;

        -- Verifica si se actualiz� alguna fila
        IF @@ROWCOUNT = 0
            THROW 50001, 'Cliente no encontrado para actualizar.', 1;

        -- Confirma la transacci�n
        COMMIT TRANSACTION;
    END TRY

    BEGIN CATCH
        -- Si ocurre un error, revierte la transacci�n
        ROLLBACK TRANSACTION;

        -- Devuelve informaci�n del error
        SELECT ERROR_NUMBER() AS ErrorNumber,
               ERROR_MESSAGE() AS ErrorMessage;
    END CATCH
END;

go

EXEC ActualizarCliente @IdCliente = 1, @nombre = 'test.', @descripcion = 'Cliente VIP';

-----------------------------------------------------------------------------------------

CREATE PROCEDURE EliminarCliente
    @IdCliente INT
AS
BEGIN
    -- Inicia la transacci�n
    BEGIN TRANSACTION;

    BEGIN TRY
        -- Elimina el cliente por su ID
        DELETE FROM Cliente
        WHERE IdCliente = @IdCliente;

        -- Verifica si se elimin� alguna fila
        IF @@ROWCOUNT = 0
            THROW 50002, 'Cliente no encontrado para eliminar.', 1;

        -- Confirma la transacci�n
        COMMIT TRANSACTION;
    END TRY

    BEGIN CATCH
        -- Si ocurre un error, revierte la transacci�n
        ROLLBACK TRANSACTION;

        -- Devuelve informaci�n del error
        SELECT ERROR_NUMBER() AS ErrorNumber,
               ERROR_MESSAGE() AS ErrorMessage;
    END CATCH
END;

go

EXEC EliminarCliente @IdCliente = 2;

--------------------------------------------------------------

CREATE PROCEDURE BuscarClientePorId
    @IdCliente INT
AS
BEGIN
    BEGIN TRY
        -- Selecciona el cliente basado en el ID proporcionado
        SELECT IdCliente, nombre, descripcion
        FROM Cliente
        WHERE IdCliente = @IdCliente;
    END TRY

    BEGIN CATCH
        -- Devuelve información del error
        SELECT ERROR_NUMBER() AS ErrorNumber,
               ERROR_MESSAGE() AS ErrorMessage;
    END CATCH
END;

go

EXEC BuscarClientePorId @IdCliente = 1;

Comentarios

Entradas populares de este blog

Conexión con Power Shell - Sql server - sqlclient doc

Conexión con Power Shell - Sql server - OLE DB doc