Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Procedimientos y funciones
por
U Asignatura:
T
Sexto Cuatrimestre
ISC 61
1
¿Qué es un procedimiento almacenado en SQL?
Un procedimiento almacenado de SQL Server es un grupo de una o más instrucciones
Transact-SQL o una referencia a un método de Common Runtime Language (CLR) de
Microsoft .NET Framework. Los procedimientos se asemejan a las construcciones de
otros lenguajes de programación
Pueden:
Ventajas:
1
SQL Server admite los procedimientos del sistema que proporcionan una interfaz
de SQL Server a los programas externos para varias actividades de mantenimiento.
Estos procedimientos extendidos usan el prefijo xp. Para obtener una lista completa
de los procedimientos extendidos, vea Procedimientos almacenados extendidos
generales (Transact-SQL).
Extendidos definidos por el usuario: Los procedimientos extendidos le permiten
crear sus propias rutinas externas en un lenguaje de programación como puede ser
C. Estos procedimientos son DLL que una instancia de SQL Server puede cargar y
ejecutar dinámicamente.
En el asistente se selecciona una plantilla que se emplea como base para el código en
el procedimiento almacenado. Se crea la plantilla para seleccionarla en el asistente.
Para un simple procedimiento almacenado, por lo general utilizaría una de las plantillas
básicas. No obstante, puede crear una plantilla para familiarizarse con el proceso de
creación de plantillas.
2
Sustituya [Your SQL to execute goes here] por la siguiente sentencia SQL:
LAST_NAME, ORGANIZATION_CODE
FROM EMP_EMPLOYEE_DIM;
3
En el editor, realice las acciones siguientes:
• Añada el parámetro de entrada org en la declaración del procedimiento, de
manera que quede así:
CREATE PROCEDURE SPEmployee ( IN org CHAR(6) )
• Elimine el punto y coma que sigue a EMP_EMPLOYEE_DIM.
• Inserte la siguiente cláusula de condición:
WHERE ORGANIZATION_CODE = org;
El procedimiento almacenado terminado contiene el código siguiente:
P1: BEGIN
-- Declarar cursor
LAST_NAME, ORGANIZATION_CODE
FROM EMP_EMPLOYEE_DIM
OPEN cursor1;
END P1
4
¿Cómo se ejecuta un procedimiento en SQL?
El procedimiento se ejecuta colocando "execute" (o "exec") seguido del nombre del
procedimiento y los valores para los parámetros separados por comas:
Esa sintaxis ejecuta el procedimiento pasando valores a los parámetros por posición.
También podemos emplear la otra sintaxis en la cual pasamos valores a los
parámetros por su nombre:
• Cuando pasamos valores con el nombre del parámetro, el orden en que se colocan
puede alterarse.
Si queremos ejecutar un procedimiento que permita omitir los valores para los
parámetros debemos, al crear el procedimiento, definir valores por defecto para cada
parámetro:
@editorial varchar(20)='Planeta'
as
from libros
editorial=@editorial;
5
¿Cuál es la diferencia entre un procedimiento y una función?
Una función devuelve un valor
La función del nombre proviene de las matemáticas. Se utiliza para calcular un valor
basado en la entrada.
Pero si desea mantener una función limpia (solo observe los lenguajes funcionales),
debe asegurarse de que la función no tenga un efecto secundario.
(@PARAMETRO TIPO=VALORPORDEFECTO)
returns TIPO
begin
INSTRUCCIONES
return VALOR
end;
Luego del nombre se colocan (opcionalmente) los parámetros de entrada con su tipo.
6
Ejemplo de uso
Creamos una función a la cual le enviamos una fecha y nos retorna el nombre del mes
en español:
7
¿Cómo se ejecuta una función en SQL?
El método execute, a veces abreviado como exec, permite solicitar la ejecución de
procedimientos almacenados.
Esta funcionalidad permite evitar un problema que a veces aparece al diseñar scripts
Transact SQL, procedimientos o funciones, que es cómo construir de manera dinámica
una consulta. Es sencillo dar valor a los diferentes argumentos de la consulta. Este no
es el caso cuando se construye la consulta en función del valor o la presencia de
algunos argumentos.
Para evitar este tipo de problemas, es necesario que el desarrollador no ejecute una
consulta o una fracción de consulta directamente introducida por el usuario sin que
haya pasado los controles necesarios para asegurar que este código no contiene
ningún ataque SQL.
Sintaxis
Execute 'cadenaCaracteres
Ejemplo de uso