Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ALMACENADOS
ESFE/AGAPE, 2020
Objetivos
Introducción
https://docs.microsoft.com/es-es/sql/relational-databases/stored-
procedures/stored-procedures-database-engine?view=sql-server-ver15
Base de datos:
Departamento
Id
Nombre PuntoTuristico
Id
IdMunicipio
IdRuta
Nombre
Descripcion Evento
Municipio Telefono Id
Id Movil IdPuntoTuristico
IdDepartamento WebSite Descripcion
Nombre Lat FechaRealizacion
FechaFiestaPatronal Lon LugarRealizacion
Patronos IndiceOrden
Estado
Ruta
Id
Nombre
Descripcion
Estado
Desplegamos la base de
datos(MapaTuristico), luego
clic en + para explorar las
carpetas y ubicar la carpeta
“Programación”.
Ubicada la carpeta
“Programación”,
desplegamos y buscamos la
carpeta “Procedimientos
almacenados”.
Luego en procedimientos
almacenados, desplegamos en
+ para mostrar los
procedimientos almacenados,
sino aparecen; hacemos clic
derecho en la carpeta
procedimientos almacenados,
luego clic en actualizar.
Ubicamos la carpeta
procedimientos almacenados.
Así es como se ve la pestaña en blanco que se crea al dar click en “Nueva consulta”, para
efectos de esta guía trabajaremos usando T-SQL para trabajar con procedimientos
almacenados.
Creando los procedimientos para Departamento:
A continuación, se crearán los procedimientos almacenado para las consultas
(INSERT, UPDATE, DELETE y SELECT), para la tabla “Departamento”.
INSERT:
Datos a utilizar en la
consulta. Ver tabla
departamento
end
go
Seleccionar el
Finalmente
código para
Ejecutar.
colocarnos en la
base de datos.
Seleccionar el
código del
procedimiento
almacenado.
Execute(Ejecutar)
insertarDepartamento(Nombre
del Procedimiento allmacenado),
@nombre (parametro),
‘Sonsonate’(registro).
Lo que hemos hecho con la instrucción execute, es primero invocar el
procedimiento que queremos ejecutar, luego asignarle los parámetros que tiene el
procedimiento, los valores a guardar en la tabla.
Es por eso que cuando colocamos el parametro @nombre le asignamos el valor
‘Sonsonate’, y de esa manera inserte ese departamento a la tabla al ejecutar el
procedimiento.
Al final si se ejecuta correctamente obtendremos el siguiente mensaje:
Datos a utilizar en la
consulta. Ver tabla
departamento
Aquí podemos verificar que en el campo “Id” está lleno por cantidades correlativas
la cuales son asignadas por el mismo gestor de base de datos al momento que
vuelves un campo autogenerable con el “identity(1,1)”. Es imperativo que la tabla
tenga un campo de valor atómico, es decir, que sea único entre los registros, que
no se repita.
Para comenzar primero debemos tener en cuenta como sería la consulta normal
sin procedimiento almacenado:
update Departamento set nombre = 'Cabañas' where Id = 13;
Si nos damos cuenta en esta consulta lleva una condición que debe cumplirse para
que se ejecute la consulta, y esa es que se aplique únicamente al registro con el
“Id = 13” que le corresponde al departamento que necesita la modificación, esa
condición la dicta la cláusula WHERE.
Es muy comprensible que en estos momentos te preguntes ¿por qué es necesario
poner un where y el id del registro que queremos modificar a la consulta?
Aclararé esa duda antes de hacer el procedimiento:
Posibles preguntas:
¿Qué pasaría si ejecutamos la consulta, así como está?
¿Se modificará la descripción del producto Pollo, o pasará algo más?
Veamos…
A primera vista tenemos el siguiente resultado:
Datos a utilizar en la
consulta. Ver tabla
departamento
Si nos damos cuenta en esta consulta de tipo “DELETE” lleva una condición que
debe cumplirse para que se ejecute la consulta, y esa es que se aplique únicamente
al registro con el “Id = 3” que es el que le corresponde al departamento que vamos
a eliminar, esa condición la dicta la cláusula WHERE.
Al igual que el procedimiento anterior si decidimos ejecutar una consulta de tipo
“DELETE” sin la cláusula “WHERE” afectaríamos a todos los registros; esto
quiere decir, que todos los registros de la tabla serían eliminados. Para evitar este
tipo de situaciones es que después de la cláusula especificamos a través del
campo “Id” que registro es el que debemos eliminar.
El procedimiento quedaría así: Se le asigna ese nombre
ya que dice la acción
use MapaTuristico que este hará y en que
go
tabla.
create procedure eliminarDepartamento
Una vez ejecutado el código de la misma forma que hicimos con el primer y segundo
procedimiento almacenado para poder crearlo. Si se ejecuta sin errores puedes
visualizarlo ya en la carpeta “Procedimientos almacenados”.
Datos a utilizar en la
consulta. Ver tabla
departamento
Una vez ejecutado el código de la misma forma que hicimos con el primer y segundo
procedimiento almacenado para poder crearlo. Si se ejecuta sin errores puedes
visualizarlo ya en la carpeta “Procedimientos almacenados”.
Para ejecutarlo y poder eliminar registros de la tabla
con él, lo podemos hacer de dos formas al igual que
para crearlo.
Insert:
Permite añadir registros a una tabla. Con ella podemos ir añadiendo registros uno
a uno, o añadir de golpe tantos registros como nos devuelva una instrucción
SELECT.
Update:
El procedimiento Actualizar (Update) realiza una sentencia UPDATE en la tabla
basado en la llave primaria para un registro especificado en la cláusula WHERE de
la sentencia.
Delete:
El procedimiento Eliminar (Delete), elimina una fila especificada en la cláusula
WHERE.
Execute, exec :
Ejecuta una cadena de comandos o una cadena de caracteres dentro de un lote de
Transact-SQL o uno de los siguientes módulos: procedimiento almacenado del
sistema, procedimiento almacenado definido por el usuario, procedimiento
almacenado CLR, función escalar definida por el usuario o procedimiento
almacenado extendido. La instrucción EXECUTE se puede usar para enviar
comandos de paso a través a los servidores vinculados. Adicionalmente, el contexto
en el que se ejecuta una cadena o un comando se puede establecer de forma
explícita.
Select:
Recupera las filas de la base de datos y habilita la selección de una o varias filas o
columnas de una o varias tablas en SQL Server.
Begin:
Es una palabra clave que permite indicar en el editor de métodos el inicio de una
secuencia de comandos SQL.
BEGIN..END:
Utilizado en conjunto con IF..ELSE o WHILE para agrupar un conjunto de
instrucciones.