Introduccion Al SQL Procedural

INTRODUCCION AL SQL PROCEDURAL El SQL PL es, en realidad, un subconjunto del SQL que proporciona construcciones de proce

Views 100 Downloads 3 File size 112KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

INTRODUCCION AL SQL PROCEDURAL 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. Procedimientos de SQL PL y de SQL. 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. Para conocer el conjunto completo de elementos del lenguaje soportado en los procedimientos de SQL PL, vea la sentencia CREATE PROCEDURE (SQL) en la Consulta de SQL. Procedimientos almacenados 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 sercompilados 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. Una de las principales ventajas de este tipo de objetos, es que 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 mismo tiempo 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 . La creación de un procedimiento almacenado puede ser realizada bien desde el ISQL_W , 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, en el grupo correspondiente a los procedimientos almacenados, dentro de esta última herramienta.

La sintaxis de dicha instrucción es básicamente la siguiente: CREATE PROCEDURE Nombre_del_procedimiento [Lista_de_parámetros] AS (Sentencias SQL) [RETURN [Valor]] Donde: Nombre_del_procedimiento : Identificador que determina elnombre 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 OUPUT 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 elsistema. 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 siguientes: TRIGGERS (DISPARADORES) Un trigger es un tipo especial de procedimiento almacenado que se ejecuta automáticamente al intentarse efectuar una modificación de los datos, en la tabla a la que se encuentran asociados. Las operaciones que pueden “disparar” un trigger son las correspondientes a las instrucciones SQL , INSERT , UPDATE Y DELETE . Puede definirse un trigger para cada una de ellas, o bien definir un trigger asociado a una combinación de las mismas. La mayor utilidad que se confiere a un trigger, es la de asegurar la integridad referencial o el cumplimiento de las distintas reglas definidas, si bien estas son operaciones que pueden delegarse en el propio servidor, mediante las instrucciones y cláusulas de especificación de las reglas de integridad, definidas durante la creación de las tablas, o añadidas posteriormente. El hecho de tener algún trigger asociado a una tabla, incide de forma negativa en cuanto al rendimiento se refiere, si bien la mayor parte del tiempo empleado en su ejecución corresponde al acceso a las diferentes tablas implicadas en los chequeos de integridad En relación a la creación de los triggers, las herramientas disponibles son las mismas que en el Caso de los procedimientos almacenados, si bien deberán utilizarse las opciones correspondientes. La instrucción que permite la creación de untrigger es CREATE TRIGGER , y su sintaxis es la siguiente: CREATE TRIGGER Nombre_del_Trigger ON Nombre_de_la_tabla FOR {INSERT,UPDATE,DELETE} AS (Sentecias_SQL) Donde:

Nombre_del_Trigger : Identificador que determina el nombre del trigger en la base de datos y que debe cumplir las reglas de construcción de identificadores en SQL Server. Nombre_de_la_tabla : Nombre de la tabla sobre la que será ejecutado el trigger, en caso de ser ésta alterada, en cuanto a datos se refiere. INSERT: Instrucción de inserción de filas. UPDATE: Instrucción de actualización de filas. DELETE : Instrucción de eliminación de filas. Sentencias_SQL Cualquier tipo de sentencia SQL, a excepción de las siguientes: •Cualquier instrucción CREATE •Cualquier instrucción DROP •ALTER TABLE y ALTER DATABASE •SELECT INTO •GRANT y REVOKE En el caso en que la instrucción CREATE TRIGGER forme parte de un conjunto de instrucciones ( Batch ), ésta deberá ser la primera y sólo puede ser aplicada sobre una tabla. Aunque desde el trigger pueden referenciarse objetos de otras bases de datos, éste sólo puede se creado en la base de datos en curso. El intento de crear un trigger sobre un trigger ya existente, provoca la sustitución inmediata y sin aviso, del anterior. Los triggers pueden ser anidados y permiten un nivel máximo de anidamiento de 16. En caso de que un trigger caiga en un bucle infinito, se acabará producción un error de desbordamiento del nivel de anidamiento.

Los triggers no son reentrantes lo que quiere decir queen caso de que un trigger en ejecución, realice una actualización que provoque la activación del mismo, tal activación no se producirá. Con relación a las transacciones hay que decir que en el caso de comenzarse una transacción y activarse un trigger que contenga y ejecute el comando ROLLBACK TRANSACTION , éste deshará la transacción completa iniciada antes de su activación. Otra de las mayores utilidades de los triggers es deshacer transacciones iniciadas antes de su activación, como consecuencia de un error detectado durante su ejecución. CONCLUSIÓN Con la idea de facilitarnos las tareas que debemos de desempeñar los humanos, hemos venido inventado diversas herramientas a lo largo de nuestra historia, que nos permiten tener una mejor calidad de vida. Los ordenadores son uno más de los inventos del hombre, aunque debemos decir que las tecnologías para su fabricación y explotación han tenido un desarrollo sorprendente a partir de la segunda mitad del siglo XX. Así pues, tratando de dar una solución al problema planteado, surgieron los lenguajes de programación, que son como un lenguaje cualquiera, pero simplificado y con ciertas normas, para poder trasmitir nuestros deseos al ordenador. El Sistema de Gestión de Bases de Datos (SGBD) Consiste en un conjunto de programas, procedimientos y lenguajes que nos proporcionan las herramientas necesarias para trabajar con una base de datos. Incorporar una serie de funciones que nos permita definir los registros, sus campos, sus relaciones, insertar, suprimir, modificar y consultar los datos.