0% encontró este documento útil (0 votos)
11 vistas18 páginas

Tarea No. 7 Programacion III

El documento aborda la importancia y características de los procedimientos almacenados en SQL, destacando sus ventajas como el mejor rendimiento, seguridad y facilidad de mantenimiento. Se presentan ejemplos prácticos de cómo crear, modificar y ejecutar procedimientos almacenados para insertar y actualizar registros en una base de datos. Además, se discute su relevancia en el desarrollo de aplicaciones, especialmente en el contexto de un sistema de punto de venta en desarrollo.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
11 vistas18 páginas

Tarea No. 7 Programacion III

El documento aborda la importancia y características de los procedimientos almacenados en SQL, destacando sus ventajas como el mejor rendimiento, seguridad y facilidad de mantenimiento. Se presentan ejemplos prácticos de cómo crear, modificar y ejecutar procedimientos almacenados para insertar y actualizar registros en una base de datos. Además, se discute su relevancia en el desarrollo de aplicaciones, especialmente en el contexto de un sistema de punto de venta en desarrollo.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 18

Universidad Abierta Para Adultos

(UAPA)

Asignatura
Programación III
FGI207

Participante:
Joel Antonio Alcántara Bretón

Matricula:
100070754

Tema:

Tarea No.7
Procedimientos Almacenados

Facilitador:
Diógenes Amaury Martínez Silverio

Fecha:
5 de Julio del 2024
Santiago de los Caballeros, R.D
Introducción

Los procedimientos almacenados representan una herramienta esencial que permite


optimizar y asegurar la eficiencia de nuestras aplicaciones. Con la realización de esta
tarea, he explorado a fondo los procedimientos almacenados, su importancia,
características, ventajas y desventajas. Además, se ha desarrollado ejemplos prácticos
que ilustran cómo insertar y actualizar registros en una base de datos, y cómo invocar
estos procedimientos desde una aplicación. Esta tarea no solo enriquece nuestro
conocimiento técnico, sino que también fortalece nuestras habilidades para crear
sistemas eficientes.
1. Investigar en la web acerca de los procedimientos almacenados, su importancia,
características, ventajas, desventajas y elabora un informe.

Un procedimiento almacenado es un tipo de código en SQL que se puede almacenar


para su uso posterior y se puede usar muchas veces. Entonces, cada vez que necesite
ejecutar la consulta, en lugar de llamarla, simplemente puede llamar al procedimiento
almacenado. También puede pasar parámetros a un procedimiento almacenado, de
modo que el procedimiento almacenado pueda actuar en función de los valores de los
parámetros que se pasan.

Los procedimientos almacenados son conjuntos de una o varias instrucciones


almacenadas en base de datos, que pueden ser llamados desde otra parte de la
aplicación. Los procedimientos almacenados permiten recibir parámetros de entrada
y/o salida, aunque no siempre es necesario que devuelvan información. Además, y a
diferencia de las funciones, pueden realizar operaciones internas que alteren la base
de datos tales como INSERTS, UPDATES y/o DELETES.

Características y tipos

 Permiten recibir parámetros de entrada y/o salida.


 Pueden realizar operaciones internas que alteren el estado de la base de datos
(INSERT INTO…)
 Pueden llamar a otros procedimientos almacenados.
 Al encapsular bloques de código, mejoran el tráfico de red entre cliente y
servidor. Además, mejora la eficiencia a estimular la reutilización de código.
 Aportan mayor seguridad. Por ejemplo, los procedimientos almacenados pueden
cifrarse y el uso de parámetros protege contra inyecciones directas de código
SQL.
 Mejoran el rendimiento y facilitan el mantenimiento

Atendiendo a los tipos de procedimientos podemos dividirlos en:

 Procedimientos definidos por el usuario: Aquellos que el usuario define


libremente y personaliza de acuerdo a su necesidades y lógica de negocio.
 Procedimientos temporales: Aquellos definidos por el usuario, pero
almacenados en tempbd. Son eliminados después de la sesión en que son
utilizados.
 Procedimientos del sistema: Aquellos que vienen por defecto en SQL Server.
 Procedimientos definidos por el usuario extendidos: Permiten crear rutinas
externas en un lenguaje de programación como C. Este tipo de procedimientos,
serán eliminados en versiones futuras de SQL Server por lo que
desaconsejamos su uso.

PROCEDURE
CREATE PROCEDURE

CREATE PROCEDURE es la sentencia para crear nuevos procedimientos almacenados


definidos por el usuario. La sintaxis básica es la siguiente:

CREATE PROCEDURE (parametros IN/OUT)

AS

BEGIN

[codigo]

END

EXEC

La instrucción EXEC permite ejecutar procedimientos. Existen dos formas rápidas de ejecutar
un procedimiento almacenado:

EXEC insertarModificarCuenta @id = 1, @cuenta = 111111111

o podemos declarar variables previamente:

DECLARE @RC int

DECLARE @id int

DECLARE @cuenta int

EXECUTE @RC = [dbo].[insertarModificarCuenta]

,111111111

GO

En ambos casos si consultamos la cuenta del cliente con idClientes = 1, veremos que se ha
actualizado correctamente el valor de la misma:

ALTER PROCEDURE

ALTER PROCEDURE es la instrucción que permite modificar procedimientos almacenados


ya declarados por el usuario. Las modificaciones pueden ser diversas: nombre del
procedimiento, número y tipos de argumentos, lógica interna.

DROP PROCEDURE
La sentencia DROP PROCEDURE permite eliminar completamente procedimientos
almacenados generados dentro de SQL Server.

DROP PROCEDURE IF EXISTS insertarModificarCuenta;

Como en otros tipos de DROP, es recomendable utilizar siempre la cláusula IF EXISTS

Importancia de los procedimientos almacenados:

Los procedimientos almacenados son bloques de código precompilados que se guardan en


una base de datos y se pueden ejecutar como una sola unidad. Se utilizan habitualmente en
los sistemas de bases de datos relacionales para encapsular la lógica de negocio y realizar
tareas comunes de forma eficiente.

Los procedimientos almacenados son componentes cruciales en los sistemas de gestión de


bases de datos relacionales, ofreciendo beneficios significativos en términos de rendimiento y
seguridad. Al estar precompilados y almacenados en la base de datos, estos procedimientos
pueden ejecutarse más rápidamente que las consultas SQL ad hoc, reduciendo el tráfico de
red y mejorando la eficiencia general del sistema. Además, proporcionan una capa adicional
de seguridad al permitir un control de acceso más granular y ayudar a prevenir ataques de
inyección SQL.

Desde una perspectiva de desarrollo y mantenimiento, los procedimientos almacenados


promueven la reutilización del código y la modularidad, facilitando la gestión de lógica de
negocio compleja dentro de la base de datos. Esta centralización del código no solo simplifica
las actualizaciones y correcciones, sino que también permite una abstracción efectiva de las
operaciones de base de datos, lo que puede llevar a un diseño de aplicaciones más limpio y
mantenible. En conjunto, estos factores hacen que los procedimientos almacenados sean
una herramienta valiosa para optimizar el rendimiento, la seguridad y la mantenibilidad de las
aplicaciones basadas en bases de datos.

En general, los procedimientos almacenados son una herramienta valiosa para mejorar la
eficiencia, la seguridad y la mantenibilidad de las aplicaciones de bases de datos. Los
procedimientos almacenados son una herramienta versátil que se puede utilizar para mejorar
muchos aspectos de las aplicaciones de bases de datos.

Ventajas de los procedimientos almacenados:

Ventajas:

Las principales ventajas del procedimiento almacenado se dan a continuación:

 Mejor rendimiento: las llamadas a procedimientos son rápidas y eficientes, ya


que los procedimientos almacenados se compilan una vez y se almacenan en
formato ejecutable. Por lo tanto, la respuesta es rápida. El código ejecutable se
almacena en caché automáticamente, por lo que reduce los requisitos de
memoria.

 Mayor productividad: dado que la misma pieza de código se usa una y otra vez,
se obtiene una mayor productividad.

 Facilidad de uso: para crear un procedimiento almacenado, se puede utilizar


cualquier entorno de desarrollo integrado (IDE) de Java. Luego, se pueden
implementar en cualquier nivel de arquitectura de red.

 Escalabilidad: los procedimientos almacenados aumentan la escalabilidad al


aislar el procesamiento de aplicaciones en el servidor.

 Capacidad de mantenimiento: mantener un procedimiento en un servidor es


mucho más fácil que mantener copias en varias máquinas cliente, esto se debe a
que los scripts están en una ubicación.

 Seguridad: el acceso a los datos de Oracle se puede restringir al permitir que los
usuarios manipulen los datos solo a través de procedimientos almacenados que
se ejecutan con los privilegios de su definidor.

Desventajas:

Las principales desventajas de los procedimientos almacenados se indican a


continuación:

 Pruebas: la prueba de una lógica que está encapsulada dentro de un


procedimiento almacenado es muy difícil. Cualquier error de datos en el manejo
de procedimientos almacenados no se genera hasta el tiempo de ejecución.

 Depuración: según la tecnología de la base de datos, la depuración de los


procedimientos almacenados será muy difícil o no será posible en absoluto.
Algunas bases de datos relacionales como SQL Server tienen algunas
capacidades de depuración.

 Control de versiones: el procedimiento almacenado no admite el control de


versiones.
 Costo: se requiere un desarrollador adicional en forma de DBA para acceder al
SQL y escribir un mejor procedimiento almacenado. Esto incurrirá
automáticamente en un costo adicional.

 Portabilidad: los procedimientos almacenados complejos no siempre se


transferirán a versiones actualizadas de la misma base de datos. Esto es
especialmente cierto en el caso de pasar de un tipo de base de datos (Oracle) a
otro tipo de base de datos (MS SQL Server).
2. Crear procedimientos almacenados que permitan:

Insertar y Actualizar.

Este procedimiento almacenado primero verifica si el registro existe. Si comprueba que el


registro existe lo actualizada con o sin algunos cambios que se haya realizado. Luego de
comprobar que no existe ningún tipo de registro lo inserta y lo agrega a la tabla.

CREATE PROCEDURE sp_Registro_Productos


-- Add the parameters for the stored procedure here
@codigopro[int],
@descripcionpro[varchar](25),
@costopro[money],
@preciopro[money],
@existenciapro[int],
@estatuspro[varchar](1)

AS
BEGIN
SET NOCOUNT ON;

if exists (select * from Productos where codigopro = @codigopro)


begin
update Productos set descripcionpro=@descripcionpro, costopro=@costopro,
preciopro=@preciopro, existenciapro=@existenciapro, estatuspro=@estatuspro where
codigopro=@codigopro
end
else
begin
INSERT INTO Productos(codigopro, descripcionpro, costopro, preciopro,
existenciapro, estatuspro)
values (@codigopro, @descripcionpro, @costopro, @preciopro, @existenciapro,
@estatuspro)
end
END

3. Llamar dicho procedimientos desde el lenguaje de programación especificado por tu


facilitador.

Código:

private void FrmProductos_Load(object sender, EventArgs e)


{
ClassLlenaTabla llenar = new ClassLlenaTabla();
dgvDetalleProd.DataSource = llenar.consulta("select codigopro as Codigo,descripcionpro
as Descripcion, costopro as Costo, preciopro as Precio, existenciapro as Existencia,
estatuspro as Estatus from Productos ");
}

private void btbBuscarProd_Click(object sender, EventArgs e)


{
ClassLlenaTabla llenar = new ClassLlenaTabla();
string busqueda = "where descripcionpro like '%" + txtBuscarProd.Text + "%'";
dgvDetalleProd.DataSource = llenar.consulta("select codigopro as Codigo,descripcionpro
as Descripcion, costopro as Costo, preciopro as Precio, existenciapro as Existencia,
estatuspro as Estatus from Productos " + busqueda);
}

private void btbGuardarProd_Click(object sender, EventArgs e)


{
SqlConnection con = new SqlConnection(@"Data Source= DESKTOP-HGH6L5R\
SQLEXPRESS;Initial Catalog=sistemaVentas; Integrated Security=True");
string strSql;
strSql = "sp_Registro_Productos";
SqlCommand cmd = new SqlCommand(strSql, con);
con.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@codigopro", txtCodigoProd.Text);
cmd.Parameters.AddWithValue("@descripcionpro", txtDescProd .Text);
cmd.Parameters.AddWithValue("@costopro", txtCostoProd.Text);
cmd.Parameters.AddWithValue("@preciopro", txtPrecioProd.Text);
cmd.Parameters.AddWithValue("@existenciapro", txtExiProd.Text);
cmd.Parameters.AddWithValue("@estatuspro", cmbEstatusProd.Text);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("El Producto fue Guardado con exito");

txtCodigoProd.Clear();
txtDescProd.Clear();
txtCostoProd.Clear();
txtPrecioProd.Clear();
txtExiProd .Clear();
txtCodigoProd.Focus();

}
Aquí estoy haciendo el llamado del procedimiento almacenado llamado:
“sp_Registro_Productos” para alimentar mi tabla. Luego de ejecutar mi programa se
muestran los datos guardados en mi tabla productos la cual procederé a insertar y actualizar

Insertando un nuevo producto:


Actualizando producto:

Luego de guardar presionamos el botón buscar y se actualiza el producto registrado.

Ahora voy actualizar ese mismo producto registrado cambiándole el precio para que el
programa actualice el producto en la tabla y lo muestre con el cambio realizado.
Por lo visto mi tabla no solo inserta productos también lo actualiza

4. Continuar la elaboración del proyecto final.

Con respecto al proyecto final ya he realizado el login, ya he creado la base de datos con las
tablas correspondientes para el sistema de punto de venta abc.

Ahora mismo estoy empezando a trabajar con los procedimientos almacenados para luego
diseñar e ir programando los formularios correspondientes.

A continuación le mostrare con lo que he trabajado hasta el momento.


CREATE TABLE Clientes
(
CodCliente INT PRIMARY KEY IDENTITY,
NombreCli VARCHAR(50),
ApellidoCli VARCHAR(50),
DireccionCli VARCHAR(100),
TelefonoCli VARCHAR(20),
)

CREATE TABLE Productos


(
CodProducto INT PRIMARY KEY IDENTITY,
Nombre VARCHAR(30),
Descripcion VARCHAR(200),
Precio MONEY,
Almacen INT
)

CREATE TABLE Cabecera_Factura


(
CodFactura INT PRIMARY KEY IDENTITY,
CodCliente INT FOREIGN KEY REFERENCES Clientes(CodCliente),
Fecha DATETIME,
Total MONEY
)
CREATE TABLE Detalle_Factura (
CodDetalle INT PRIMARY KEY IDENTITY,
CodFactura INT FOREIGN KEY REFERENCES Cabecera_Factura(CodFactura),
CodProducto INT FOREIGN KEY REFERENCES Productos(CodProducto),
Cantidad INT,
PrecioUnd MONEY,
Subtotal AS (Cantidad * PrecioUnd) PERSISTED
)

CREATE TABLE Usuarios


(
CodUsuario INT PRIMARY KEY IDENTITY,
NombreUsu VARCHAR(50),
ApellidoUsu VARCHAR(50),
NombreUsuario VARCHAR(20) NOT NULL,
Contraseña VARCHAR(20)
)

CREATE TABLE Roles


(
codRol INT PRIMARY KEY IDENTITY,
NomRol VARCHAR(50)
)

CREATE TABLE Usuario_Rol


(
CodUsuario INT FOREIGN KEY REFERENCES Usuarios(CodUsuario),
CodRol INT FOREIGN KEY REFERENCES Roles(CodRol),
PRIMARY KEY (CodUsuario, CodRol)
)

CREATE TABLE Permisos


(
CodPermiso INT PRIMARY KEY IDENTITY,
NomPermiso VARCHAR(30),
Descripcion NVARCHAR(50)
)

CREATE TABLE Rol_Permiso


(
CodRol INT FOREIGN KEY REFERENCES Roles(CodRol),
CodPermiso INT FOREIGN KEY REFERENCES Permisos(CodPermiso),
PRIMARY KEY (CodRol, CodPermiso)
)

Empezando a trabajar con los procedimientos almacenados para la tabla de clientes, el cual
la voy a utilizar en un formulario para crear, editar y actualizar los clientes en el proyecto.
Conclusión

Al culminar esta tarea, he podido comprender la relevancia de los procedimientos


almacenados en el desarrollo y mantenimiento de aplicaciones basadas en bases de
datos. La implementación de estos procedimientos no solo mejora el rendimiento y la
seguridad, sino que también facilita la modularidad y el mantenimiento del código. A
través de la práctica, se ha demostrado cómo los procedimientos almacenados pueden
simplificar operaciones complejas y garantizar la integridad de los datos. Este
aprendizaje me prepara para enfrentar desafíos futuros en el ámbito de la programación
y me acerca un paso más hacia la realización de proyectos más grandes y complejos,
como el sistema de punto de venta que estoy desarrollando.
Bibliografía

 https://sqlearning.com/es/elementos-avanzados/procedimientos/

 https://barcelonageeks.com/ventajas-y-desventajas-del-uso-de-procedimientos-
almacenados-sql/

Youtube: Diogenes Amaury


 Trabajando con Procedimiento Almacenado & C# 1 de 2
https://www.youtube.com/watch?v=2SfF7hY9SM8

 Trabajando con Procedimientos Almacenados & C# 2 de 2


https://www.youtube.com/watch?v=rUL_J9pvmQA

También podría gustarte