Curso de SQL Server 2021 desde cero | T-SQL, PROCEDIMIENTOS ALMACENADOS (video 59)
Summary
TLDREste script presenta un curso de SQL Server centrado en los procedimientos almacenados, que son conjuntos de instrucciones con un nombre guardado como objeto en la base de datos para realizar tareas repetitivas. Se discuten diferentes tipos de procedimientos, como los del sistema, locales y temporales. Se ilustra cómo crear y ejecutar procedimientos para tareas específicas, como seleccionar registros con ciertas condiciones, actualizar datos y aplicar lógica de programación con bloques de sentencias y funciones condicionales. El objetivo es automatizar operaciones y mejorar la eficiencia en la gestión de datos.
Takeaways
- 😀 Procedimientos almacenados son un conjunto de instrucciones con un nombre guardadas como objeto en la base de datos para realizar tareas repetitivas en SQL.
- 📚 Existen diferentes tipos de procedimientos almacenados: los del sistema (con prefijo SP), locales creados por el usuario y temporales (con signos numerales).
- 🔍 Los procedimientos almacenados locales están disponibles solo para una sesión de usuario y se eliminan al cerrarla.
- 🌐 Procedimientos almacenados globales están disponibles para todas las sesiones de la base de datos y comparten la lógica de la aplicación.
- 🛠 Permiten realizar operaciones complejas en un solo lugar, reduciendo el tráfico de red y evitando el acceso directo a las tablas.
- 👨💻 Se pueden crear procedimientos almacenados en SQL Management Studio utilizando la sintaxis 'CREATE PROC' seguido del nombre y la instrucción 'AS'.
- 🔄 Ejemplo práctico: crear un procedimiento para seleccionar artículos con una cantidad menor o igual a 20 unidades.
- 🔄 Otro ejemplo: actualizar el inventario estableciendo la cantidad en 10 para los artículos que antes tenían cero.
- 💰 Se pueden aplicar bonificaciones a empleados según ciertas condiciones, como tener más de tres hijos, mediante procedimientos almacenados.
- 📝 Utilizar bloques de sentencias y funciones condicionales como 'IF EXISTS' para controlar el flujo dentro de los procedimientos almacenados.
- 📢 La función 'PRINT' en SQL Server permite mostrar mensajes por consola dentro de los procedimientos almacenados.
Q & A
¿Qué son los procedimientos almacenados en SQL Server?
-Los procedimientos almacenados son un conjunto de instrucciones que se les da un nombre y se guardan como objeto dentro de una base de datos, con el fin de realizar tareas repetitivas dentro de SQL.
¿Cuáles son los diferentes tipos de procedimientos almacenados que se mencionan en el script?
-Se mencionan los procedimientos almacenados que se almacenan en la base de datos Master, los locales creados por el usuario, y los temporales que pueden ser locales o globales.
¿Qué prefijo se utiliza para los procedimientos almacenados en la base de datos Master y para qué sirven?
-Los procedimientos almacenados en la base de datos Master llevan el prefijo 'SP_' y se utilizan para recuperar información de tablas del sistema; se pueden ejecutar en cualquier base de datos.
¿Qué ventajas ofrecen los procedimientos almacenados de tipo global en comparación con los locales?
-Los procedimientos almacenados de tipo global están disponibles en las sesiones de todos los usuarios de la base de datos, compartiendo la lógica de la aplicación con otras aplicaciones y permitiendo realizar operaciones en un solo lugar, lo que reduce el tráfico de red.
¿Cómo se crea un procedimiento almacenado en SQL Server según el script?
-Para crear un procedimiento almacenado, se utiliza la instrucción 'CREATE PROC', se le da un nombre, y se define la instrucción 'AS' seguida de la consulta o lógica que se desea que el procedimiento ejecute.
¿Qué es un procedimiento almacenado que retorna un valor entero y cómo se indica esto en SQL Server?
-Un procedimiento almacenado que retorna un valor entero es aquel que tiene como objetivo devolver un número entero después de su ejecución. En SQL Server, esto se indica con la sintaxis 'RETURNS INT' después del nombre del procedimiento.
¿Cómo se ejecuta un procedimiento almacenado en SQL Server?
-Para ejecutar un procedimiento almacenado, se utiliza la instrucción 'EXEC' seguida del nombre del procedimiento almacenado.
¿Qué hace el procedimiento almacenado 'p_existencia' creado en el script?
-El procedimiento almacenado 'p_existencia' selecciona todos los artículos de la tabla 'artículos' donde la cantidad sea menor o igual a 20.
¿Qué función condicional se utiliza en el procedimiento almacenado 'p_actualiza_inventario' y para qué sirve?
-El procedimiento almacenado 'p_actualiza_inventario' utiliza la función condicional 'IF EXISTS' para verificar si hay registros en la tabla 'artículos' con cantidad igual a cero y, de ser así, actualizar la cantidad a 10.
¿Qué función se utiliza en el procedimiento almacenado para mostrar un mensaje en la consola y cómo se usa?
-La función 'PRINT' se utiliza para mostrar un mensaje en la consola. Se usa encerrando el mensaje entre comillas y ejecutando la instrucción 'PRINT 'mensaje';'.
¿Cómo se implementa la lógica de bonificación en el procedimiento almacenado 'p_bonificacion' según el script?
-El procedimiento almacenado 'p_bonificacion' verifica si hay empleados con más de tres hijos. Si lo hay, actualiza su sueldo con un aumento del 20% y muestra un mensaje indicando que se ha aplicado la bonificación. Si no hay empleados con más de tres hijos, muestra un mensaje indicando que no hay empleados que cumplan con la condición.
Outlines
😀 Introducción a Procedimientos Almacenados en SQL Server
El primer párrafo introduce el tema de los procedimientos almacenados en SQL Server, explicando que son conjuntos de instrucciones con nombre guardadas como objetos en la base de datos para realizar tareas repetitivas. Se mencionan diferentes tipos de procedimientos, como los del sistema (con prefijo SP), locales creados por el usuario y temporales y globales, y se enfatiza su uso para compartir la lógica de la aplicación y reducir el tráfico de red al minimizar el número de solicitudes entre el cliente y el servidor. El script muestra cómo crear un procedimiento almacenado utilizando SQL Management Studio, seleccionando datos de una tabla de artículos con una cantidad menor o igual a 20.
🛠 Creación y Ejecución de Procedimientos Almacenados
Este párrafo detalla el proceso de creación de un procedimiento almacenado que actualiza la cantidad de artículos en inventario a 10 unidades donde la cantidad actual sea cero. Se describe el uso de la cláusula 'If exists' para verificar la existencia de registros con cantidad igual a cero y la actualización de la tabla 'artículos' en consecuencia. Además, se muestra cómo ejecutar el procedimiento almacenado y se verifica el resultado con una consulta select que confirma la actualización de las cantidades a 10.
🏢 Procedimientos Almacenados para Bonificación de Empleados
En el tercer párrafo, se presenta un procedimiento almacenado para aplicar una bonificación al sueldo de empleados que tienen más de tres hijos. Se describe la estructura de un bloque de sentencias con 'If exists' para buscar registros en la tabla 'empleados' y un bloque anidado para actualizar el sueldo y mostrar un mensaje por consola usando la función 'print'. También se incluye un bloque 'Else' para manejar el caso en que no haya empleados con más de tres hijos, mostrando un mensaje correspondiente. Al final del párrafo, se ejecuta el procedimiento y se muestra cómo se maneja la condición no cumplida.
📚 Conclusión y Continuación del Curso de SQL Server
El último párrafo resume la información presentada hasta el momento y establece que, aunque el tema de los procedimientos almacenados es extenso, solo se ha tocado la superficie. Se menciona que en futuras entregas se explorarán temas como la actualización, eliminación y otras funciones que pueden trabajar dentro de los procedimientos almacenados. El script termina con un mensaje de despedida hasta la próxima entrega del curso.
Mindmap
Keywords
💡Procedimientos Almacenados
💡SQL Server
💡Stored Procedure
💡SQL Management Studio
💡SELECT
💡CREATE PROC
💡EXEC
💡Bloques de Sentencias
💡IF EXISTS
💡UPDATE
Highlights
Introducción al concepto de procedimientos almacenados en SQL Server.
Explicación de los distintos tipos de procedimientos almacenados: a nivel de base de datos, locales y temporales.
Descripción de los procedimientos almacenados de sistema y su uso para recuperar información de tablas del sistema.
Importancia de los procedimientos almacenados locales y su creación por el usuario.
Mencion de los procedimientos almacenados temporales y su diferencia con los globales.
Ventajas de los procedimientos almacenados globales en términos de acceso y modificación de datos.
Cómo los procedimientos almacenados pueden reducir el tráfico de red al enviar una única instrucción.
Paso a paso para crear el primer procedimiento almacenado utilizando SQL Management Studio.
Creación de un procedimiento almacenado para seleccionar artículos con una cantidad específica.
Uso de la cláusula 'CREATE PROC' para definir un nuevo procedimiento almacenado.
Ejemplo práctico de cómo actualizar el inventario mediante un procedimiento almacenado.
Implementación de un bloque de sentencias para realizar una actualización condicional en la base de datos.
Uso de la función 'PRINT' para mostrar mensajes en la consola desde un procedimiento almacenado.
Creación de un procedimiento almacenado para aplicar bonificaciones a empleados según el número de hijos.
Análisis de la estructura de un procedimiento almacenado utilizando bloques anidados y condiciones.
Ejecución de procedimientos almacenados y revisión de los resultados en la base de datos.
Explicación de cómo los procedimientos almacenados pueden ser útiles en la gestión de operaciones repetitivas.
Perspectiva de futuro aprendizaje sobre procedimientos almacenados, incluyendo actualizaciones y eliminaciones.
Transcripts
Hola qué tal YouTube videntes
Bienvenidos a una nueva entrega de este
su curso de sql server en esta ocasión
vamos a empezar a trabajar con los
procedimientos almacenados o storecidio
y qué es esto de un procedimiento
almacenado Pues los procedimientos
almacenados son un conjunto de
instrucciones a las que les damos un
nombre y se guardan como objeto dentro
de nuestra base esto con el fin de
realizar tareas repetitivas dentro de
sql Existen varios tipos de
Procedimientos almacenados tenemos los
que se almacenan en la base de datos
Master aquí en nuestro sistema de bases
de datos de nuestro explorador de
objetos aquí tenemos la base de datos
Master estos llevan un prefijo SP guión
que se usan para recuperar información
de tablas del sistema y se pueden
ejecutar en cualquier base de datos
tenemos los procedimientos almacenados
de tipo locales que son los que crea el
usuario que vamos a ver ahora tenemos
los temporales que pueden ser locales
estos se crean con un signo con el signo
numeral y los que son de tipo globales
que más adelante veremos que es eso son
los que comienzan con dos signos numeral
Entonces los locales están disponibles
solo para la sesión de un solo usuario y
se eliminan automáticamente Tan pronto
se cierra esa sesión los procedimientos
almacenados de tipo globales son los que
quieran disponibles en las sesiones de
todos los usuarios de la base los
procedimientos comparten la lógica de su
aplicación con otras aplicaciones dentro
de la base Por lo cual el acceso y las
modificaciones de los datos se realizan
en un solo lugar permite realizar todas
las operaciones que los usuarios
necesitan evitando que tengan que
accesar directamente a las tablas
veremos Cómo se hace eso además que
permite reducir el tráfico de red Ya que
en lugar de enviar muchas instrucciones
el usuario puede realizar operaciones
enviando una única instrucción lo cual
disminuye el número de solicitudes entre
el cliente y el servidor entonces de
inmediato vamos a poner manos a la obra
nos vamos a nuestro sql management
Studio y vamos aquí recuerden utilizando
nuestra tabla principal vamos a hacer un
Select a nuestra tabla de artículos aquí
están nuestros datos y vamos a crear
nuestro primer procedimiento almacenado
entonces aquí por ejemplo dentro de mi
inventario de artículos tenemos un campo
que se llama cantidad Yo quiero ver
todos los artículos de mi inventario que
tengan menos de 10 unidades de
existencia esto lo hacemos fácilmente
con una consulta si no pues ya deberían
saberlo pero en este caso lo vamos a
hacer con un procedimiento al almacenado
como yo creo un procedimiento almacenado
lo primero es que aquí coloco la
instrucción create espacio y ahora
escribimos Proc con y al sistema sabe
que voy a crear un procedimiento
almacenado en mi base ahora le voy a dar
un nombre a mi procedimiento a este yo
lo voy a llamar Pro guión
existencia generalmente
se utiliza siempre como costumbre
colocar digamos en la nomenclatura del
nombre una parte que nos indique que es
un procedimiento algunos administradores
colocan Pro otros administradores
colocan una p el nombre es irrelevante
simplemente con que sea un nombre
correcto de tipo carácter no hay ningún
problema en este caso yo voy a llamar al
mío p-existencia luego Aquí debajo voy a
colocar la función o la instrucción as y
aquí ahora hago un Select asterisco from
artículos y coloco Where cantidad menor
a 10 o 20 en este caso o para hacerlo un
poco más exacto menor o igual a 20 punto
y coma así de simple y sencillo acabo yo
de crear mi primer procedimiento create
Pro p existencia as y luego del As voy a
colocar la función que yo quiero que
haga ese procedimiento que es
seleccionar todos los artículos de mi
tabla artículos cuya cantidad sea menor
o igual a 20 si yo aquí selecciono todo
esto y ejecuto el sistema me dice que el
comando se completó correctamente
entonces aquí en mi explorador de
objetos si yo me voy aquí donde dice
principal voy a contraer y voy a darle
aquí a refrescar despliego de nuevo me
voy Aquí esta opción que dice
programability o programabilidad
despliego aquí y aquí veo una carpeta
que dices torpecidios cuando yo
despliego ahí puedo ver aquí un objeto
que dice dbop existencia Este es mi
procedimiento almacenado que yo Acabo de
crear si despliego aquí veo que tiene
una subcarpeta que dice para meterse o
parámetros y fíjense aquí que tiene como
una especie de icono con una instrucción
que dice returns Qué quiere decir eso
eso quiere decir que la función de este
procedimiento almacenado es retornar un
valor entero aquí yo le estoy diciendo
que me seleccione desde mi tabla
artículos todos los artículos que tienen
una cantidad menor igual a 20 el
resultado que estoy pidiendo Aquí está
parametrizado para manejar un valor
entero que es del campo cantidad por lo
tanto aquí me dice que la vamos a
llamarle la naturaleza del procedimiento
es retornar un entero Ahora aquí yo
simplemente he creado mi procedimiento
ahora me falta poner en ejecución ese
procedimiento almacenado como yo hago
eso Pues para eso me voy aquí debajo y
voy a colocar la siguiente instrucción
exec y coloco el nombre de mi
procedimiento p existencia punto y coma
si yo ahora selecciono solamente esta
instrucción de aquí abajo y la ejecuto
que estoy viendo aquí todos los
artículos cuya cantidad es menor o igual
a 20 que fue lo que pedía aquí aquí está
ninguno sobrepasa la cantidad de 20 todo
es de 20 unidades hacia abajo entonces
vamos a realizar aquí una pequeña
práctica Aquí vemos algunos valores que
dicen cero digamos que yo tengo la
instrucción de actualizar mi inventario
y verificar que en donde quiera que la
cantidad sea cero Pues coloque un 10
digamos que de cada artículo que está en
cero yo recibí 10 unidades y debo
insertarlas en mi inventario como yo
puedo hacer eso con un procedimiento
almacenado vamos a Borrar toda esta
instrucción y vamos a escribir lo
siguiente create pro y no solamente
podemos usar Pro también podemos
utilizar la palabra completa prose diur
Recuerden que ahorita utilizamos
solamente Pro pero también podemos
utilizar prosidium no importa y a este
lo vamos a llamar IP actualiza
inventario as y aquí debajo vamos ahora
a crear un bloque de sentencias Por qué
Porque lo que vamos a hacer es una
actualización que va a utilizar una
función condicional recuerde que cuando
se trata de analizar lógica de
programación debemos utilizar bloques de
sentencias entonces aquí creo mi sección
de ejecución begin y aquí ahora vamos a
utilizar nuestra condicional If exits
que ya sabemos lo que significa y para
qué se usa abrimos paréntesis Y ahora yo
hago un Select asterisco from artículos
En donde aquí debajo y ahora coloco
cantidad sea igual a cero y cierro
paréntesis que voy a hacer entonces aquí
ahora si se cumple todo eso update
artículos y ahora coloco set cantidad
igual a 10 en donde cantidad sea igual a
cero coloco punto y coma luego aquí
abajo coloco un end para culminar con la
ejecución de mi bloque de sentencias si
yo selecciono todo esto y ejecuto el
sistema me dice que el comando se
completo correctamente voy aquí a mi
sección de objetos aquí en
procedimientos almacenados hago un
refresh despliego aquí de nuevo en
programability procedimientos
almacenados Aquí está mi nuevo
procedimiento actualiza inventario voy
ahora a proceder a ejecutar aquí
copiando el nombre para ahorrar tiempo
exec el nombre de mi procedimiento punto
y coma selecciono ejecuto el sistema me
dice cinco filas afectadas Qué significa
esto que el sistema hizo correctamente
lo que programamos aquí Y qué fue lo que
hicimos creamos nuestro procedimiento y
colocamos luego de la función a la
apertura de un bloque porque vamos a
colocar una función condicional entonces
decimos si Existe algún valor en este
Select es decir buscando dentro de la
tabla los cantidades con cero si
encuentra algo entonces procede
actualizar dentro de la tabla el campo
cantidad igual a 10 específicamente en
donde esa cantidad encontrada se hace y
luego finaliza ahora entonces hacemos un
Select y creo que lo tengo por acá abajo
así ya lo vi acá Aquí está asterisco
from artículos ejecutamos y fíjense como
ya yo no tengo ninguna cantidad en cero
en mi inventario todo ha sido
actualizado a 10 entonces recuerden
guardar notas de las prácticas que vamos
haciendo yo voy a borrar ahora esta
instrucción porque quiero que utilicemos
ahora nuestra tabla de empleados para
otro ejemplo práctico con procedimientos
almacenados vamos a realizar Entonces el
siguiente ejercicio aquí yo tengo un
campo que dice cantidad hijos digamos
que yo tengo la instrucción de aplicar
una bonificación a todos los empleados
que tienen de tres hijos y que en caso
de que haya empleados que no tengan más
de tres hijos pues estos empleados no
van a recibir bonificación especial como
yo puedo cumplir con este requerimiento
preparando un procedimiento pues
simplemente vamos a colocar aquí la
instrucción create
voy a llamar al mío p-
bonificación aquí debajo voy a colocar
as y voy a abrir mi primer bloque de
sentencias porque esto requiere una
analítica hay que ejecutar una función
condicional por lo tanto debo colocar
begin y aquí coloco mi If exists abro
paréntesis y ejecuto mi consulta
análisis tráeme todos los registros de
mi tabla empleados
en donde cantidad de hijos sea mayor a 3
cierro paréntesis y ya aquí tengo la
evaluación de mi condicional si aparece
algún valor pues entonces aquí vamos a
hacer lo siguiente vamos a colocar ahora
un nuevo bloque de sentencias qué estoy
haciendo aquí Esto es lo que se conoce
en programación de base de datos como
bloques anidados ya yo tengo un bloque
aquí pero estoy colocando un bloque
dentro de otro bloque una sección de
ejecución dentro de otra Entonces este
segundo bloque aquí va a tener ahora una
función que vamos a hacer Aquí vamos a
colocar por ejemplo update y voy a
colocar aquí ahora mi tabla empleados
voy a colocar entonces set sueldo igual
a el mismo campo sueldo por un digamos
por ejemplo 0.20 Esto va a actualizar la
tabla empleados Estableciendo en el
campo sueldo con un aumento de un 20%
entonces aquí debajo vamos a colocar
algo nuevo que no habíamos visto en sql
server que es la función print que nos
trae salida de datos por consola un aquí
colocó una comilla y voy a colocar lo
siguiente se ha aplicado la bonificación
y cierro comillas punto y coma más
adelante vamos a explicar todo esto aquí
debajo ahora voy a colocar un end para
indicar que ya finalizó mi primer bloque
fíjense como al colocar en el sistema
automáticamente sombrea mi encabezado de
bloque tipo Beijing aquí ahora debo
colocar un Else porque estoy utilizando
aquí un If es una condicional significa
que debe pasar una cosa o debe pasar
otra por lo tanto Aquí voy ahora a
colocar de nuevo un bloque de ejecución
porque voy a colocar de nuevo mi función
print con un mensaje que diga no hay
empleados con más de tres hijos que es
el requerimiento que se me estaba
pidiendo y aquí ahora pues colocó el
cierre de este bloque ya sólo me queda
cerrar mi bloque principal que está aquí
arriba por lo tanto para temas de
intención lo voy a colocar aquí atrás y
colocó end punto y coma vamos a ver aquí
selecciono ejecuto el sistema me dice
que el comando se ejecutó correctamente
despliego aquí hago un refresh de nuevo
vuelvo a mi carpeta de Procedimientos
almacenados y aquí está Pay bonificación
vamos a explicar qué es lo que he hecho
aquí cree un procedimiento que se llama
bonificación qué va a hacer primero va a
ejecutar una analítica y va a verificar
si existen empleados con más de tres
hijos seleccióname de la tabla empleados
cualquier registro en donde la cantidad
de hijos sea mayor a tres luego va a
abrir un segundo bloque de ejecución y
va a ser una actualización a esa tabla
Estableciendo el sueldo de esos
empleados de aquí con un aumento del 20%
entonces luego nos va a traer un mensaje
que va a decir se ha aplicado la
bonificación aquí colocó un en Porque
aquí tengo una ejecución de update más
un pri este print es una función que
necesita su bloque vamos a llamarle
privado para trabajar no se puede
colocar un print por ejemplo dentro de
un único bloque en este caso tenemos que
crear un bloque anidado específicamente
para el print entonces aquí si se
actualiza el sueldo de los empleados que
tienen más de tres hijos me va a traer
un mensaje que dice se ha aplicado la
bonificación cierro ese bloque y luego
colocó Else para en caso de que esto no
se cumpla Recuerden que esto es If exist
es decir si esto se cumple tienes que
hacer esto pero si no se cumple es lo
que hace leals pues entonces abro mi
bloque que necesita como les dije la
función print su bloque personal abro su
pequeño bloque y ahora coloco print no
hay empleados con más de tres hijos y
luego termino de cerrar mi bloque
principal vamos ahora a ejecutar nuestro
procedimiento p bonificación Nos vamos
aquí debajo colocamos
bonificación punto y coma seleccionamos
cuando yo ejecuto fíjense lo que aquí
Viene un mensaje que dice no hay
empleados con más de tres hijos Qué
significa esto que aquí lo que se cumple
en la condicional es el no se cumple
esta condición se cumple esto es decir
el sistema verifica si hay empleados con
más de tres hijos como no los hay no se
cumple eso lo que se cumple es el es
decir otro caso cualquiera que no sea
ese por lo tanto lo que yo le dije aquí
es que si no se cumple me traiga un
mensaje que diga no hay empleados con
más de tres hijos y aquí está nuestro
mensaje en resumen en la empresa nadie
se lleva bonificación Entonces lo vamos
a dejar hasta aquí por el momento para
no extendernos tenemos más cosas que ver
de Procedimientos almacenados es un eh
tema un poco extenso pero muy muy
interesante y muy útil vamos a seguir
más adelante trabajando con
procedimientos almacenados vamos a ver
cómo actualizarlos vamos a ver con
Cuáles otras funciones yo puedo trabajar
en un procedimiento almacenado y vamos a
ver cómo eliminarlos por el momento lo
dejamos hasta aquí nos vemos en una
siguiente entrega hasta la próxima
5.0 / 5 (0 votes)