Sunteți pe pagina 1din 11

Procedimientos almacenados

Procedimientos almacenados 15-1

SQL Server

Procedimientos almacenados 15-1

Objetivos

Definicin de procedimientos almacenados (PA) Creacin de PA Ejecucin de PA

Procedimientos almacenados 15-2

SQL Server

Procedimientos almacenados 15-2

Procedimiento almacenado

Coleccin precompilada de instrucciones de Transact-SQL almacenadas bajo un nombre y procesadas como una unidad. Los procedimientos almacenados estn disponibles para administrar SQL Server y mostrar informacin acerca de bases de datos y usuarios.

Procedimientos almacenados 15-3

SQL Server

Un procedimiento almacenado es un grupo de instrucciones Transact-SQL compiladas en un nico plan de ejecucin. Los procedimientos almacenados de SQL Server tienen cuatro maneras de devolver datos: Parmetros de salida, que pueden devolver datos (como valor entero o carcter) o una variable de cursor (los cursores son conjuntos de resultados que pueden devolver filas de una en una). Cdigos de retorno, que siempre son un valor entero. Un conjunto de resultados por cada instruccin SELECT contenida en el procedimiento almacenado o en cualquier otro procedimiento almacenado invocado por el procedimiento almacenado original. Un cursor global al que se puede hacer referencia desde fuera del procedimiento almacenado.

Procedimientos almacenados 15-3

Reglas de procedimientos almacenados

La propia definicin CREATE PROCEDURE puede incluir cualquier nmero y tipo de instrucciones SQL, excepto las siguientes instrucciones CREATE, que no pueden ser utilizadas nunca dentro de un procedimiento almacenado: CREATE DEFAULT CREATE TRIGGER CREATE PROCEDURE CREATE VIEW CREATE RULE USE
Procedimientos almacenados 15-4

SQL Server

Se puede crear otros objetos de base de datos dentro de un procedimiento almacenado. Puede hacer referencia a un objeto creado en el mismo procedimiento almacenado, siempre que se cree antes de que se haga referencia al objeto. Puede hacer referencia a tablas temporales dentro de un procedimiento almacenado. Si crea una tabla temporal privada dentro de un procedimiento almacenado, la tabla temporal existir nicamente para los fines del procedimiento; desaparecer cuando ste finalice. Si ejecuta un procedimiento almacenado que llama a otro procedimiento almacenado, el procedimiento al que se llama puede tener acceso a todos los objetos creados por el primer procedimiento, incluidas las tablas temporales. Si se ejecuta un procedimiento almacenado remoto que realiza cambios en un servidor SQL Server remoto, los cambios no se podrn deshacer. Los procedimientos almacenados remotos no intervienen en las transacciones. El nmero mximo de parmetros en un procedimiento almacenado es de 1.024. El nmero mximo de variables locales en un procedimiento almacenado est limitado nicamente por la memoria disponible. En funcin de la memoria disponible, el tamao mximo de un procedimiento almacenado es de 128 MB.

Procedimientos almacenados 15-4

Crear un procedimiento almacenado

La instruccin CREATE PROCEDURE crea un procedimiento almacenado (una coleccin guardada de instrucciones Transact-SQL) que puede tomar y devolver parmetros proporcionados por el usuario. Los procedimientos se pueden crear para uso permanente o para uso temporal en la sesin de un usuario (procedimiento local temporal) o para el uso temporal en todas las sesiones del usuario (procedimiento temporal global).

Procedimientos almacenados 15-5

SQL Server

Antes de crear un procedimiento almacenado, tenga en cuenta lo siguiente: Las instrucciones CREATE PROCEDURE no se pueden combinar con otras instrucciones SQL en el mismo lote. De forma predeterminada, el permiso para crear procedimientos almacenados corresponde al propietario de la base de datos, que puede transferirlo a otros usuarios. Los procedimientos almacenados son objetos de base de datos, y sus nombres deben ajustarse a las reglas para los identificadores. Slo puede crear un procedimiento almacenado en la base de datos actual. Cuando cree un procedimiento almacenado, deber especificar lo siguiente: Todos los parmetros de entrada y de salida del lote o del procedimiento que realiza la llamada. Las instrucciones de programacin que realicen operaciones en la base de datos, incluidas las llamadas a otros procedimientos. El valor de estado devuelto al lote o al procedimiento que realiza la llamada para indicar que la operacin se ha realizado correctamente o que se ha producido un error (y el motivo del mismo).

Procedimientos almacenados 15-5

Crear un procedimiento
CREATE PROCEDURE myprocedure AS SELECT * FROM dept The command(s) completed successfully.

Procedimientos almacenados 15-6

SQL Server

En el ejemplo su crea un procedimiento que va a realizar una consulta a la tabla dept

Procedimientos almacenados 15-6

Ejecutar un procedimiento
EXECUTE myprocedure EXEC myprocedure DEPTNO -----10 20 30 40 DNAME -------------ACCOUNTING RESEARCH SALES OPERATIONS LOC ------------NEW YORK DALLAS CHICAGO BOSTON

Procedimientos almacenados 15-7

SQL Server

Ejecutar un procedimiento Se ejecuta el procedimiento almacenado myprocedure. Se muestra la consulta de la tabla dept

Procedimientos almacenados 15-7

Procedimiento con parmetros


CREATE PROCEDURE myprocedure2 @nombre varchar(20), @job varchar(10) AS UPDATE emp SET ename = @nombre , job = @job WHERE empno = 7369; SELECT * FROM emp WHERE ename=@nombre;

Procedimientos almacenados 15-8

SQL Server

En el ejemplo se crea un procedimiento almacenado que recibe dos parmetros como entrada para asignrselos a los campos ename y job de la tabla emp. Posteriormente realiza una consulta a la misma tabla con la condicin de alguna coincidencia con el primer parmetro.

Procedimientos almacenados 15-8

Resultado de la ejecucin
EXECUTE myprocedure2 DAVID, DRIVER EXEC myprocedure2 DAVID, DRIVER

(1 row(s) affected) EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ------ ------ ------ ------ --------- --------- ------- -----7369 DAVID DRIVER 7902 17-12-80 800.00 NULL 20 (1 row(s) affected)

Procedimientos almacenados 15-9

SQL Server

En el ejemplo se ejecuta el procedimiento almacenado myprocedure2 envindole dos cadenas como parmetros de salida. El resultado que se muestra es la consulta que el procedimiento almacenado myprocedure2 tiene como cdigo.

Procedimientos almacenados 15-9

Utilizando el return
CREATE PROCEDURE myprocedure3 @deptno INT AS IF EXISTS (SELECT * FROM dept WHERE deptno=@deptno) BEGIN SELECT dname FROM dept WHERE deptno=@deptno END ELSE BEGIN PRINT 'No existe' RETURN END
Procedimientos almacenados 15-10

SQL Server

Utilizando el return Este procedimiento almacenado utiliza la instruccin RETURN para salir del procedimiento sin retornar algn valor.

Procedimientos almacenados 15-10

Eliminando procedimientos almacenados

Para eliminar un procedimiento almacenado, escibra la siguiente sentencia DROP PROCEDURE <sp_name>

DROP PROCEDURE myprocedure3 ;

Procedimientos almacenados 15-11

SQL Server

Por ejemplo, si se ejecuta CREATE TRIGGER FOR UPDATE para una tabla que ya tiene un desencadenador UPDATE, se crear un desencadenador de actualizacin adicional. En las versiones anteriores, slo se permita un desencadenador por cada evento de modificacin (INSERT, UPDATE, DELETE) en cada tabla.

Procedimientos almacenados 15-11

S-ar putea să vă placă și