You are on page 1of 7

Leccin 9- Crear procedimientos almacenados y funciones Objetivos 1. 2. 3. 4. 5.

Diferenciar entre bloques annimos y subprogramas Crear un procedimiento simple e invocarlo desde un bloque annimo Crear una funcin simple Cree una simple funcin que acepta un parmetro Diferenciar entre los procedimientos y funciones

Usted ha aprendido sobre bloques annimos. Esta leccin es una introduccin a los bloques con nombre, que tambin se llaman subprogramas. Los procedimientos y funciones son subprogramas PL / SQL. En la leccin, se aprende a diferenciar entre bloques annimos y subprogramas. Procedimientos y Funciones Hasta este punto, los bloques annimos son los nicos ejemplos de cdigo PL / SQL tratados en este curso. Como su nombre lo indica, los bloques son bloques annimos PL / SQL ejecutables sin nombre. Debido a que son sin nombre, que no pueden ser ni reutilizados ni almacenan para su uso posterior. Los procedimientos y funciones se denominan bloques PL / SQL. Tambin se conocen como subprogramas. Estos subprogramas se compilan y almacenan en la base de datos. La estructura de bloque de los subprogramas es similar a la estructura de bloques annimos. Los subprogramas se pueden declarar no slo a nivel de esquema, sino tambin dentro de cualquier otro bloque PL / SQL. Un subprograma contiene las siguientes secciones: Seccin declarativa: Subprogramas pueden tener una seccin declarativa opcional. Sin embargo, a diferencia de los bloques annimos, la parte declarativa de un subprograma no se inicia con la palabra clave DECLARE. La seccin declarativa opcional sigue la forma actual o con la palabra clave en la declaracin de subprograma. Seccin ejecutable: Esta es la seccin obligatoria del subprograma, que contiene la implementacin de la lgica empresarial. Mirando el cdigo de esta seccin, puede determinar fcilmente la funcionalidad del negocio del subprograma. Esta seccin comienza y termina con las palabras clave BEGIN y END, respectivamente. Seccin Excepcin: Esta es una seccin opcional que se incluye para controlar excepciones. Diferencias entre Bloques Annimos y Subprogramas La tabla en la diapositiva no slo muestra las diferencias entre bloques annimos y subprogramas, sino tambin pone de relieve los beneficios generales de los subprogramas. Los bloques annimos no son objetos de base de datos persistentes. Ellos se compilan y ejecutan solo una vez. No se almacenan en la base de datos para su reutilizacin. Si desea volver a utilizarlos, debe volver a ejecutar el script que crea el bloque annimo, que hace que se recompile y ejecute. Los procedimientos y funciones se compilan y almacenan en la base de datos en una forma compilada. Ellos se vuelven a compilar slo cuando se modifican. Debido a que se almacenan en la base de datos, cualquier aplicacin puede hacer uso de estos subprogramas funcin de los permisos adecuados. La aplicacin de llamada puede pasar parmetros a los procedimientos si el procedimiento est diseado para aceptar parmetros.

Del mismo modo, una aplicacin que llama puede recuperar un valor si se invoca una funcin o un procedimiento.

Procedimiento: Sintaxis La diapositiva muestra la sintaxis para crear procedimientos. En la sintaxis:

procedure_name argument

Es el nombre del procedimiento que se ha creado

Es el nombre dado al parmetro de procedimiento. Cada argumento se asocia con un modo y tipo de datos. Usted puede tener cualquier nmero de argumentos separados por comas. mode Modo de argumento: IN (por defecto) ,OUT ,IN OUT

datatype

Es el tipo de datos del parmetro asociado. El tipo de datos de los parmetros no pueden tener el tamao explcita, en cambio, usar% TYPE. Procedure_body bloque PL/ SQL que compone el cdigo

La lista de argumentos es opcional en una declaracin de procedimiento. Usted aprender acerca de los procedimientos en detalle en el curso titulado Base de Datos Oracle 10g: Desarrollo de unidades de programa PL / SQL.

Procedimiento: Ejemplo

Examinar el cdigo en la imagen. El procedimiento add_dept inserta un nuevo departamento con identificador de departamento 280 y el nombre del departamento ST-Curriculum. En el procedimiento se declara dos variables, dept_id y DEPT_NAME, en la seccin declarativa. La seccin declarativa de un procedimiento se inicia inmediatamente despus de la declaracin de procedimiento y no comienza con la palabra clave DECLARE. El procedimiento utiliza el atributo cursor implcito o el atributo SQL%ROWCOUNT para comprobar si la fila se insert con xito. SQL%ROWCOUNT debera devolver 1 en este caso. Nota: Cuando se crea un objeto (por ejemplo una tabla, procedimiento, funcin, etc), se hacen las entradas a la tabla user_objects. Cuando se ejecuta el cdigo en el portaobjetos correctamente, puede consultar la tabla de user_objects emitiendo el siguiente comando: SELECT object_name,object_type FROM user_objects;

La fuente del procedimiento se almacena en la tabla user_source. Puede verificar la fuente para el procedimiento emitiendo el siguiente comando: SELECT * FROM user_source WHERE name='ADD_DEPT';

Invocando el Procedimiento

La diapositiva muestra cmo invocar un procedimiento desde un bloque annimo. Usted tiene que incluir la llamada al procedimiento en la seccin ejecutable del bloque annimo. Del mismo modo, se puede invocar el procedimiento desde cualquier aplicacin, como por ejemplo una aplicacin de formularios, una aplicacin Java, y as sucesivamente. La instruccin SELECT en el cdigo comprueba si la fila se insert con xito. Tambin se puede invocar un procedimiento con la sentencia SQL CALL <procedure_name>.

Funcin: Sintaxis La diapositiva muestra la sintaxis para crear una funcin. En la sintaxis:

function_name argument

Es el nombre de la funcin a ser creado

Es el nombre que recibe el parmetro de la funcin (Cada argumento se asocia a un modo y tipo de datos. Puede tener cualquier nmero o argumentos separados por una coma. Se pasa el argumento cuando se invoca la funcin.) mode El tipo de parmetro (slo en los parmetros debe ser declarada.)

datatype RETURN datatype function_body

Es el tipo de datos del parmetro asociado El tipo de datos del valor devuelto por la funcin El bloque PL/ SQL que compone el cdigo de la funcin

La lista de argumentos es opcional en la declaracin de la funcin. La diferencia entre un procedimiento y una funcin es que una funcin debe devolver un valor al programa de llamada. Por lo tanto, la sintaxis contiene return_type, que especifica el tipo de dato del valor

que la funcin devuelve. Un procedimiento puede devolver un valor a travs de un parmetro OUT o IN OUT. Funcin: Ejemplo

La funcin check_sal est escrito para determinar si el sueldo de un empleado en particular es mayor o menor que el salario promedio de todos los empleados que trabajan en el mismo departamento. La funcin devuelve TRUE si el sueldo del empleado es mayor que el salario medio de los empleados en el departamento, en caso contrario, devuelve FALSE. La funcin devuelve NULL si se produce una excepcin NO_DATA_FOUND. Tenga en cuenta que los controles de funcin para el empleado con el ID de empleado 205. La funcin es modificable para comprobar slo la identificacin del empleado. Si desea comprobar que no existen otros empleados, se debe modificar la funcin en s. Usted puede resolver este problema mediante la declaracin de la funcin para que acepte un argumento. A continuacin, puede pasar a la identificacin de empleado como parmetro.

La invocacin de la funcin Usted incluye la llamada a la funcin en la seccin ejecutable del bloque annimo. La funcin se invoca como una parte de un comunicado. Recuerde que la funcin devuelve check_sal booleano o NULL. As, la llamada a la funcin se incluye en la expresin condicional para el bloque IF. Nota: Puede utilizar el comando DESCRIBE para comprobar los argumentos y el tipo de retorno de la funcin, como en el siguiente ejemplo: DESCRIBE check_sal;

Pasando un parmetro a la funcin Recuerde que la funcin estaba predefinida para comprobar el sueldo del empleado con el ID de empleado 205. El cdigo que se muestra en la diapositiva elimina esa limitacin porque se reescribe a aceptar el nmero de empleado como parmetro. Ahora puede pasar a diferentes nmeros de empleados y comprobar si el salario del empleado.

La invocacin de la funcin con un parmetro El cdigo en la diapositiva invoca la funcin en dos ocasiones por el paso de parmetros.

La salida del cdigo es el siguiente:

Resumen Puede utilizar bloques annimos para disear cualquier funcionalidad en PL / SQL. Sin embargo, la principal limitacin con bloques annimos es que no se almacenan y, por lo tanto, no pueden ser reutilizados. En lugar de crear bloques annimos, puede crear PL / SQL subprogramas. Los procedimientos y funciones se llaman subprogramas, nombrados bloques PL / SQL. Subprogramas expresan la lgica reutilizable en virtud de parametrizacin. La estructura de un procedimiento o una funcin es similar a la estructura de un bloque annimo. Estos subprogramas se almacenan en la base de datos y son, por lo tanto, reutilizable. En esta leccin, debe haber aprendido a: Crear un procedimiento simple Invoque el procedimiento de un bloque annimo Crear una funcin simple Cree una funcin simple que acepta parmetros Invoque la funcin de un bloque annimo

You might also like