Está en la página 1de 20

Procedimientos almacenados

Internal
Definición

Un procedimiento almacenado es un conjunto de instrucciones que se pueden


llamar desde otras consultas o desde otros procedimientos almacenados. Un
procedimiento puede tomar argumentos de entrada y mostrar valores como
resultados. Debes nombrar y almacenar un procedimiento de un conjunto de
datos. Un procedimiento almacenado puede acceder a los datos o modificarlos
en varios conjuntos de datos de varios usuarios. También puede contener una
consulta de varias instrucciones.

Internal
Usabilidad

Los procedimientos almacenados de SQL sirven para:

• Recibir parámetros de entrada y devolver valores de salida como resultado a un


programa que realice una llamada.

• Ejecutar instrucciones de programación que ejecutan acciones dentro de la


base de datos.

• Devolver valores de estados que permiten saber si la operación de un programa


se ha realizado de forma exitosa o no.

Internal
Tipos

Existen tres tipos de procedimientos almacenados:

• Procedimientos almacenados definidos por el usuario

• Procedimientos almacenados temporales

• Procedimientos almacenados del sistema de SQL

• Procedimientos almacenados extendidos definidos por el usuario

Internal
Procedimientos almacenados definidos por el usuario

Los procedimientos almacenados definidos por el usuario se establecen en las


bases de datos definidas por el usuario o en las bases de datos del sistema
(Master, Model, MSDB…).

Los procedimientos almacenados definidos por el usuario se crean en Transact-


SQL o como una referencia a un método CLR (Common Language Runtime)
de .NET.

Internal
Procedimientos almacenados temporales

Los procedimientos almacenados temporales son un tipo de procedimientos definidos por el usuario, pero que se almacenan en la base de
datos TempDB.

Hay dos tipos de procedimientos almacenados temporales:

• Locales, su primer caracter es “#”.

• Globales, su primer caracter es “##”.

Ambos tipos se diferencian entre sí por tres aspectos:

• Los nombres

• La visibilidad

• La disponibilidad

Internal
Procedimientos almacenados del sistema de SQL

Los procedimientos almacenados del sistema de SQL pertenecen a SQL Server y sus primeros
caracteres son “sp_”.

Estos procedimientos se encuentran almacenados de manera física en la base de datos interna y


de manera oculta en Resource, y se muestran de forma lógica en el sys.schemas (esquema sys). Por
otro lado, la base de datos MSDB también tiene procedimientos almacenados, pero en el esquema
dbo.

Internal
Procedimientos almacenados extendidos definidos por el usuario

Los procedimientos almacenados extendidos definidos por el usuario son DLL


que una instancia de SQL Server es capaz ejecutar de forma dinámica. Se
consideran “extendidos” debido a que el usuario puede crear rutinas externas por
su propia cuenta en un lenguaje de programación.

Internal
Como crear un procedimiento almacenado

Permisos

Requiere el permiso CREATE PROCEDURE en la base de datos y el permiso ALTER en el esquema en el que se va a crear el procedimiento.

Para crear un procedimiento en el Explorador de objetos para consultar los estudiantes con sus respectivas notas de una materia determinada.

• En el Explorador de objetos, conéctese a una instancia del Motor de base de datos y expándala.

• Expanda Bases de datos, la base de datos Notas y, por último, Programación.

• Haga clic con el botón derecho en Procedimientos almacenados y, después, haga clic en Nuevo procedimiento almacenado.

• En el cuadro de diálogo Especificar valores para parámetros de plantilla , especifique los siguientes valores para los parámetros mostrados:

• Semestre.

• Materia.

Internal
Continua…

Internal
Continua…

• Expanda Bases de datos, la base de datos Notas y, por último, Programación.

• Expanda los procedimientos almacenados, haga clic con el botón derecho en el procedimiento almacenado y posteriormente Execute stored procedure,

• En el panel de ejecución ingrese el dato de la materia que desea consultar y de clic en OK.

Internal
Funciones

Internal
Operadores lógicos

Una función es un conjunto de instrucciones SQL que realizan una tarea específica de manera
automática. Las funciones fomentan la reutilización del código. Por ejemplo, si tiene que escribir
repetidamente grandes scripts SQL para realizar la misma tarea, usted puede crear una función
que realice esa tarea. Una función acepta entradas en forma de parámetros y devuelve un valor.
SQL Server viene con un conjunto de funciones integradas que realizan una variedad de tareas.

Se puede crear un procedimiento almacenado para agrupar un conjunto de instrucciones SQL


para ser posteriormente ejecutadas, sin embargo, no se puede llamar a los procedimientos
almacenados dentro de las instrucciones SQL. Hay que considerar que las funciones, por otro
lado, pueden ser invocadas.

Internal
Funciones integradas

el servidor SQL agrega algunas funciones integradas a cada base de datos. Si se desea ver la lista de funciones integradas para su base de datos “schooldb”, vaya
al Explorador de objetos -> Bases de datos -> schooldb -> Programabilidad -> Funciones -> Funciones del sistema. Esto le proporciona la lista de todas las
funciones integradas, como se muestra a continuación.

Ejemplo:

DatePart(“yyyy”, [Fecha]);

Internal
Funciones definidas por el usuario

Por lo general Las funciones integradas existentes no siempre ofrecen la


funcionalidad deseada. Por ejemplo, tome la función “DATENAME”, aunque
recupera la fecha en múltiples formatos, uno que no sea compatible con la
función “datename”. Por ejemplo, si queremos recuperar la fecha de
nacimiento de los estudiantes (“fechaentrega”) utilizando la manera
indicada en el formato “día, 01 mes, año”, por cuanto, es diferente del
formato utilizado anteriormente. Ninguna función integrada recupera la
fecha de entrega en este formato. Para hacer esto, tendríamos que llamar a
la función “DATENAME” varias veces y confiar que sea efectiva en la
concatenación de cadenas para recuperar la fecha en nuestro formato
deseado.

Internal
Como crear una función

Como todas las funciones, se crean con la instrucción "create function". La sintaxis básica es:

create function NOMBRE

(@PARAMETRO TIPO = VALORPORDEFECTO)

returns TIPO

begin

INSTRUCCIONES

return VALOR

end;

Luego del nombre se colocan (opcionalmente) los parámetros de entrada con su tipo.

La cláusula "returns" indica el tipo de dato retornado.

El cuerpo de la función, se define en un bloque "begin...end" que contiene las instrucciones que retornan el valor. El tipo del valor retornado puede ser de cualquier tipo, excepto text, ntext, image,
cursor o timestamp.

Internal
Funciones escalares, de tabla y agregadas

Escalar: La función toma un valor de entrada y devuelve un valor de devolución único, la cantidad agregada del producto especificado en el
inventario.

ALTER FUNCTION [dbo].[r_correoporestudiante] ( @id_estudiante AS INT )

RETURNS VARCHAR(50)

AS

BEGIN

DECLARE @correo varchar(50);

SET @correo = (SELECT correo FROM Estudiante WHERE id_estudiante = @id_estudiante)

RETURN @correo

END

Internal
Continua…

Tabla: La función de tipo valores de tabla toma un parámetro de entrada y devuelve las columnas de una tabla en especifico.

Agregadas: La función de agregación en SQL nos permiten efectuar operaciones sobre un conjunto de resultados, pero devolviendo un
único valor agregado para todos ellos. Es decir, nos permiten obtener medias, máximos, etc... sobre un conjunto de valores.

Las funciones de agregación básicas que soportan todos los gestores de datos son las siguientes:

• COUNT: devuelve el número total de filas seleccionadas por la consulta.

• MIN: devuelve el valor mínimo del campo que especifiquemos.

• MAX: devuelve el valor máximo del campo que especifiquemos.

• SUM: suma los valores del campo que especifiquemos. Sólo se puede utilizar en columnas numéricas.

• AVG: devuelve el valor promedio del campo que especifiquemos. Sólo se puede utilizar en columnas numéricas.

Internal
Mas información

https://learn.microsoft.com/es-es/sql/t-sql/functions/functions?view=sql-server-ver16

Internal
EJERCICIO

Internal

También podría gustarte