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
Publicar un comentario