Anda di halaman 1dari 15

Unidad 5

 El SQL PL es, en realidad, un subconjunto del


SQL que proporciona construcciones de
procedimiento que se pueden utilizar para
implementar la lógica alrededor de las
sentencias de SQL tradicionales.
 El SQL PL es un lenguaje de programación de
alto nivel con una sintaxis sencilla y
sentencias habituales de control de
programación, que incluyen las sentencias IF,
ELSE, WHILE, FOR, ITERATE y GOTO, así
como otras sentencias.
 Los procedimientos de SQL PL pueden contener
parámetros, variables, sentencias de asignación,
sentencias de control de SQL PL y sentencias de
SQL compuestas.
 Los procedimientos de SQL PL también dan
soporte a un potente mecanismo de manejo de
errores y condiciones, a las llamadas anidadas y
repetitivas y a la devolución de varios conjuntos
de resultados al llamante o a la aplicación
cliente.
 Un procedimiento almacenado es un objeto
perteneciente a una base de datos, que
contiene un conjunto de instrucciones SQL,
tanto de consulta, como de manipulación de
datos, como de control de la secuencia del
programa, asociados a un nombre, y que son
ejecutados en conjunto.
 Puede contener parámetros tanto de entrada
como de salida (parámetros pasados por
referencia), así como devolver un valor de retorno.

 Son precompilados al ejecutarse por primera vez,


y no vuelven a ser compilados con las
subsiguientes ejecuciones, lo que proporciona una
cierta mejora en el rendimiento. No obstante si se
desea se puede forzar su re compilación.
 Este tipo de objetos, al residir en la propia base de
datos, son compartibles por todos los usuarios,
pudiendo de esta manera beneficiarse de los
distintos cachés del servidor.

 Al ser código externo a la aplicación puede ser


alterado sin que exista siempre la necesidad de
modificar el código de la misma.
 Al ser objetos de la base de datos se hallan
sujetos a los esquemas de seguridad
determinados por el administrador de la
misma:
Existen diversas clases de procedimientos
almacenados, entre los que se encuentra los
procedimientos almacenados del sistema, que
sirven de herramientas para la realización de
distintas tareas de administración.
 Un procedimiento almacenado se crea con la sentencia
CREATE PROCEDURE
que debe ser la única dentro de un mismo batch (linea de
procedimientos).
 La creación de un procedimiento almacenado puede ser
realizada bien desde la opción Manage.Stored Procedures
del Enterprise Manager , o bien desde la propia ventana
donde se muestran los objetos de la base de datos
(Query), en el grupo correspondiente a los procedimientos
almacenados, dentro de esta última herramienta.
CREATE PROCEDURE Nombre_del_procedimiento
[Lista_de_parámetros]
AS
(Sentencias SQL)
[RETURN [Valor]]

 Nombre_del_procedimiento :

Identificador que determina el nombre asignado al


procedimiento y que debe cumplir con la regla de
definición de identificadores establecida en MSSQL
Server.
 Lista_de_parámetros :

Parámetros definidos en el procedimiento con la siguiente


sintaxis:
@nombre_var Tipo_var [OUTPUT]
El símbolo @ es necesario no sólo en la declaración sino que
forma parte del propio nombre. La claúsula OUTPUT
determina que dicho parámetro será utilizado para pasar
información al código llamador, es decir, viene a ser un
parámetro pasado por referencia.
Dicha lista puede contener un máximo de 255 parámetros.
 Sentencias_SQL:

Como se explicó anteriormente, el cuerpo del procedimiento


puede estar compuesto de cualquier tipo de instrucción SQL, a
excepción de las siguientes:
CREATE VIEW
CREATE DEFAULT
CREATE RULE
CREATE PROCEDURE
CREATE TRIGGER
Entre las instrucciones que puede contener, está la llamada a
otros procedimientos almacenados, los cuales podrán acceder a
los objetos pertenecientes al llamador, exceptuando las tablas
temporales creadas por el mismo.
 RETURN [Valor]

Un procedimiento almacenado puede devolver un valor de


retorno de tipo integer , no nulo, que puede ser rescatado
por el código llamador para tener conocimiento del
resultado del proceso de dicho procedimiento.
Los valores -1 al -99 están reservados por el sistema, así
como el 0 que se interpreta como “finalizado con éxito”. Si
no se proporciona un código definido por el usuario, se
utilizan los del sistema. De la misma forma los definidos
por el usuario tiene prioridad sobre los definidos por el
sistema. En caso de producirse varios errores a lo largo de
la ejecución del mismo procedimiento, se devuelve el
código cuyo valor absoluto es mayor. Algunos ejemplos de
códigos y sus significados son los Disparadores
DELIMITER //
CREATE PROCEDURE addAutomovil(IN nombre
VARCHAR(50),IN plazas INT)
BEGIN
IF plazas < 6 THEN
INSERT INTO coche VALUES(nombre,plazas);
ELSE
INSERT INTO monovolumen
VALUES(nombre,plazas);
END IF;
END;
> //
 Este procedimiento almacenado recibe los
parámetros de nombre y número de plazas y
en función de las plazas del vehículo inserta
los datos en la tabla coche o monovolumen.

 Para hacer una llamada al procedimiento


almacenado basta con usar la sentencia call:

CALL addAutomovil("Nissan Serena",8);

Anda mungkin juga menyukai