Tarea Eloy Procedimientos Almacenados

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 5

1.- Un procedimiento almacenado (stored procedure en ingls) es un programa (o procedimiento) el cual es almacenado fsicamente en una base de datos.

Su implementacin vara de un gestor de bases de datos a otro. La ventaja de un procedimiento almacenado es que al ser ejecutado, en respuesta a una peticin de usuario, es ejecutado directamente en el motor de bases de datos, el cual usualmente corre en un servidor separado. Como tal, posee acceso directo a los datos que necesita manipular y slo necesita enviar sus resultados de regreso al usuario, deshacindose de la sobrecarga resultante de comunicar grandes cantidades de datos salientes y entrantes. 2.- La compilacin es un proceso que consiste en analizar el procedimiento almacenado y crear un plan de ejecucin. Se realiza la primera vez que se ejecuta un procedimiento almacenado o si el procedimiento almacenado se debe volver a compilar (recompilacin). SQL Server recompila automticamente un procedimiento almacenado si se realiza algn cambio en la estructura de una tabla (o vista) referenciada en el procedimiento (alter table y alter view) y cuando se modifican las claves (insert o delete) de una tabla referenciada. Un procedimiento almacenado puede recompilarse explcitamente. En general se recomienda no hacerlo excepto si se agrega un ndice a una tabla referenciada por el procedimiento o si los datos han variado mucho desde la ltima compilacin. SQL Server ofrece tres mtodos para recompilar explcitamente un procedimiento almacenado: 1) Se puede indicar, al crear el procedimiento, que SQL Server no guarde en la cach un plan de ejecucin para el procedimiento sino que lo compile cada vez que se ejecute. En este caso la sintaxis es la siguiente: create procedure NOMBREPROCEDIMIENTO PARAMETROS with recompile as SENTENCIAS; 2) Podemos especificar "with recompile" al momento de ejecutarlo: exec NOMBREPROCEDIMIENTO with recompile; 3) Podemos ejecutar el procedimiento almacenado del sistema "sp_recompile". Este procedimiento vuelve a compilar el procedimiento almacenado (o desencadenador) que se especifica. La sintaxis es: exec sp_recompile NOMBREOBJETO; El parmetro enviado debe ser el nombre de un procedimiento, de un desencadenador, de una tabla o de una vista. Si es el nombre de una tabla o vista, todos los procedimientos almacenados que usan tal tabla (o vista) se vuelven a compilar. 5.- Especificar parmetros y sus valores Si un procedimiento almacenado requiere valores de parmetros, se deben especificar cuando se ejecuta el procedimiento. Cuando se definen parmetros de entrada y salida se los precede del smbolo @, seguido por el nombre del parmetro y la designacin del tipo de dato. Cuando se los invoca para ser ejecutados, se debe incluir un valor para el parmetro (y opcionalmente, el nombre del parmetro). Los prximos dos ejemplos corren el procedimiento almacenado au_info de la base Pubs con dos parmetros: @lastname (apellido) y @firstname (nombre): --llama al procedimiento almacenado con los valores de los parmetros

USE Pubs GO EXECUTE au_info Green, Marjorie --llama al procedimiento alamcenado con los valores y nombres de los parmetros USE Pubs GO EXECUTE au_info Green, Marjorie @lastname = Green, @firstname = Marjorie En el primer ejemplo, los valores de los parmetros fueron especificados pero los nombres no. Si se especifican los valores sin sus correspondientes nombres, los valores se deben indicar en el mismo orden con se especificaron en la definicin del procedimiento. En el segundo ejemplo, los nombres y los valores son ambos indicados. En este caso, se los puede poner en cualquier orden. Aquellos parmetros a los que se les especifica un valor por defecto en la definicin del procedimiento no necesitan ser obligatoriamente especificados cuando se los llama. La lista siguiente muestra algunas sintaxis opcionales disponibles cuando se ejecuta un procedimiento almacenado: Un variable de cdigo de retorno de tipo entero (integer) para almacenar valores retornados desde el procedimiento almacenado. La palabra clave RETURN con un valor (o unos valores) debe ser especificada en el procedimiento almacenado para que este variable opcional funcione. Un punto y coma seguida por un nmero de grupo. Para procedimientos almacenados agrupados, se puede o ejecutar todos los procedimientos en el grupo simplemente especificando el nombre del procedimiento almacenado, o se puede incluir un nmero para indicar cual procedimiento almacenado se desea ejecutar. Por ejemplo, si se crean dos procedimientos almacenados llamados ProcAgrupado;1 y ProcAgrupado;2, se puede correr a ambos ingresando EXEC ProcAgrupado. O, se puede ejecutar el procedimiento 2 escribiendo EXEC ProcAgrupado;2. Si se definen parmetros en los procedimientos almacenados agrupados, cada nombre de parmetro debe ser nico en el grupo. Variables para mantener los parmetros definidos en el procedimiento almacenado. Las variables son definidas con el uso de la palabra clave DECLARE antes de usar EXECUTE.

Ejecutar procedimiento almacenado cuando arranca SQL Server Ya sea por razones de performance, administracin, o cumplimiento de tareas, se puede indicar que al arrancar el SQL Server se ejecuten procedimientos almacenados. Se utiliza para ello el procedimiento almacenado sp_procoption. Este procedimiento acepta tres parmetros: @ProcName, @OptionName y @OptionValue. El comando siguiente configura un procedimiento almacenado llamado AutoStart para que arrnque automticamente: USE Master GO

EXECUTE sp_procoption @procname = autostart, @optionname = startup, @optionvlue = true Slo los procedimientos de dbo y ubicados en la base master pueden ser configurados para ejecutarse automticamente. Para ejecutar al arrancarse el SQL Server a procedimientos ubicados en otras bases debern ser llamados desde un procedimiento almacenado ubicado en la Master y configurado para arrancar automticamente. Llamar a un procedimiento desde otro se denomina llamadas anidadas. Se puede configurar a un procedimiento para que arranque automticamente desde el Enterprise Manager. Se accede a la base Master, se hace clic en el nodo Stored Procedures. Se selecciona al procedimiento almacenado, y luego clic derecho. Se abre el cuadro de dilogo Properties (Propiedades) y se marca la casilla de seleccin Execute Whenever SQL Server Start (ejecutar siempre que el SQL Server arranca). Para determinar si un procedimiento almacenado arranca automticamente, se puede ejecutar la funcin OBJECTPROPERTY y controlar la propiedad ExecIsStartup. Por ejemplo el cdigo siguiente invoca a la funcin para determinar si el procedimiento AutoStart est configurado para ejecutarse automticamente: USE Master SELECT OBJECTPROPERTY(object_id(autostart), ExecIsStartup) Para deshabilitar procedimientos para que no continen ejecutndose automticamente, se puede correr el procedimiento almacenado sp_configure. El siguiente comando configura al SQL Server para que los procedimientos almacenados configurados para ejecutarse automticamente no se arranquen la prxima vez que se encienda el SQL Server: EXECUTE sp_configure @configname = scan for startup procs, @configvalue = 0 RECONFIGURE GO 5.- Modificar procedimientos almacenados Se puede usar el comando ALTER PROCEDURE (ALTER PROC en su versin abreviada),para modificar el contenido de un procedimiento almacenado de usuario, utilizando el Query Analyzer o una herramienta de comandos como osql. La sintaxis del comando ALTER PROCEDURE es casi idntica a la del CREATE PROCEDURE. La ventaje de usar el comando ALTER PROCEDURE en vez de eliminar el procedimiento y crearlo de nuevo es que con este comando se retiene la mayora de la propiedades configuradas para el procedimiento, tales como su ID. El conjunto de permisos, y su bandera de arranque. Para mantener la encriptacin o la configuracin de recompilacin, se debe especificar con las palabras claves WITH ENCRYPTION o WITH RECOMPILE cuando se ejecuta ALTER PROCEDURE.

Se puede usar el Enterprise Manager o el Query Analyzer para modificarprocedimientos almacenados de usuario. En el Enterprise Manager, clic derecho sobre el procedimiento almacenado y luego clic en Properties. En el cuadro de dilogo Stored Procedure Properties, modifique los comandos del procedimiento que aparecen en la caja Text, y luego clic en OK. Usando el Query Analyzer, clic derecho en el procedimiento almacenado y clic en Edit. Despus de modificar un procedimiento almacenado ejectelo. Para modificar el nombre de un procedimiento almacenado definido por el usuario, se usa el procedimiento almacenado sp_rename. El comando siguiente renombra el procedimiento almacenado ByRoyalty a RoyaltyByAuthorID: USE PUBS GO EXECUTE sp_rename @objname = byroyalty, @newname = RoyaltyByAutorID, @objtype = object Procedimientos almacenados definidos por el usuario pueden ser renombrados en el Enterprise Manager haciendo clic derecho en el nombre del procedimiento almacenado y clic en Rename (renombrar) Se deber tener cuidado cuando se renombre un procedimiento almacenado u otros objetos, como tablas. Los procedimientos almacenados pueden ser anidados. Si se produce una llamada a un objeto renombrado, el procedimiento que llama no podr ubicar al objeto renombrado y generar un mensaje de error.

Procedimiento sin parmetros. /* -------------------------------------------------------------------------------Autor: Mario Alberto Sanchez Gamboa Fecha: Descripcion: Procedimiento que realiza la suma de dos numeros y regresa el resultado mediante el uso de la sentencia SELECT. **Emplea declaracion de variables. **Asigacion de valores a variables. **Uso de ISNULL.- Remplaza el nulo por el valor especificado. **Uso de CAST.- Convierte explicitamente una expresion de un tipo de dato a otro. **Concatenacion de cadenas. -------------------------------------------------------------------------------- */ CREATE PROCEDURE spSumaSinParametros AS --Declaracion de variables DECLARE @Numero1 FLOAT, @Numero2 FLOAT, @Resultado FLOAT, @Operacion NVARCHAR(25)

--Asignacion de valores iniciales SET @Numero1 = 5.55

SET @Numero2 = 15

--Operacion. --Nota: Se puede hacer uso de SELECT y/o SET para la asignacion de valores a las variables. SELECT @Resultado = ISNULL(@Numero1, 0) + ISNULL(@Numero2, 0) SET @Operacion = CAST(@Numero1 AS VARCHAR) + ' + ' + CAST(@Numero2 AS VARCHAR) + ' = ' + CAST(@Resultado AS VARCHAR)

--Realizar un select con el resultado de la operacion. SELECT @Numero1 AS Numero1, @Numero2 AS Numero2, @Resultado AS Resultado, @Operacion AS Operacion GO Para ejecutar el procedimiento almacenado empleamos la siguiente sentencia: EXECUTE spSumaSinParametros Resultado: Numero1 Numero2 Resultado Operacion -------------------- ---------- --------------------- -------------------5.5499999999999998 15.0 20.550000000000001 5.55 + 15 = 20.55 (1 row(s) affected)

También podría gustarte