Creación y Gestión de Subprogramas Autónomos

Puede crear y gestionar subprogramas PL/SQL autónomos.

Nota: Para realizar los tutoriales en este documento, debe estar conectado a Oracle Database como usuario HR desde SQL Developer.

Acerca de la Estructura del Subprograma

Un subprograma sigue la estructura de bloque PL/SQL; es decir, consta de:

Los comentarios pueden aparecer en cualquier lugar en el código PL/SQL. El compilador PL/SQL los ignora. La adición de comentarios al programa promueve la lectura y ayuda a la comprensión. Un comentario de Una Sola Línea empieza con un guión doble (--) y se extiende hasta el final de la línea. Un comentario de varias línea empieza con una barra y el asterisco (/*) y termina con un asterisco y una barra (*/).

La estructura de un procedimiento es la siguiente:

PROCEDURE name [ ( parameter_list ) ]
{ IS | AS }
  [ declarative_part ]
BEGIN  -- executable part begins
  statement; [ statement; ]...
[ EXCEPTION -- executable part ends, exception-handling part begins]
  exception_handler; [ exception_handler; ]... ]
END; /* exception-handling part ends if it exists;
        otherwise, executable part ends */

La estructura de una función es como la de un procedimiento, salvo que incluye una cláusula RETURN y al menos una sentencia RETURN (y algunas cláusulas opcionales que están más allá del ámbito de este documento):

FUNCTION name [ ( parameter_list ) ] RETURN data_type [ clauses ]
{ IS | AS }
  [ declarative_part ]
BEGIN  -- executable part begins
  -- at least one statement must be a RETURN statement
  statement; [ statement; ]...
[ EXCEPTION -- executable part ends, exception-handling part begins]
  exception_handler; [ exception_handler; ]... ]
END; /* exception-handling part ends if it exists;
        otherwise, executable part ends */

El código que empieza por PROCEDURE o FUNCTION y termina antes de IS o AS es la firma de subprograma. Las partes declarativa, ejecutable y de manejo de excepciones componen el cuerpo de subprograma. La sintaxis del manejador de excepciones está en "Acerca de Exceptions y Manejadores de Exenciones".

Consulte también: Referencia de lenguaje PL/SQL de Oracle Database para obtener más información sobre las partes del subprograma

Tutorial: Creación de un Procedimiento Autónomo

Este tutorial muestra cómo utilizar la herramienta Crear Procedimiento para crear un procedimiento autónomo denominado ADD_EVALUATION que agrega una fila a la tabla EVALUATIONS.

La tabla EVALUATIONS se creó en el Example 4-1.

Para crear un procedimiento autónomo, utilice la herramienta SQL Developer Crear Procedimiento o la sentencia DDL CREATE PROCEDURE.

Pasos para crear un procedimiento independiente mediante la herramienta Crear procedimiento:

  1. En el marco Conexiones, expanda hr_conn.

  2. En la lista de tipos de objetos de esquema, haga clic con el botón derecho en Procedimientos.

  3. En la lista de opciones, haga clic en Nuevo procedimiento.

    Se abre la ventana Crear procedimiento.

  4. En Esquema, acepte el valor por defecto, HR.

  5. Para Nombre, cambie PROCEDURE1 a ADD_EVALUATION.

  6. Haga clic en el icono Agregar parámetro.

    Aparecerá una fila debajo de las cabeceras de columna. Sus campos tienen los siguientes valores por defecto: Name, PARAM1; Mode, IN; No Copy, deseleccionado; Data Type, VARCHAR2; Default Value, vacío.

  7. Para Nombre, cambie PARAM1 a EVALUATION_ID.

  8. Para Modo, acepte el valor por defecto, IN.

  9. Para Data Type, seleccione NUMBER en el menú.

  10. Deje Valor por Defecto vacío.

  11. Agregue un segundo parámetro repitiendo los pasos del 6 al 10 con el nombre EMPLOYEE_ID y el tipo Data Type NUMBER.

  12. Agregue un tercer parámetro repitiendo los pasos del 6 al 10 con el nombre EVALUATION_DATE y el tipo Data Type DATE.

  13. Agregue un cuarto parámetro repitiendo los pasos del 6 al 10 con el nombre JOB_ID y el tipo de dato VARCHAR2.

  14. Agregue un quinto parámetro repitiendo los pasos del 6 al 10 con el nombre MANAGER_ID y el tipo de dato NUMBER.

  15. Agregue un sexto parámetro repitiendo los pasos del 6 al 10 con el nombre DEPARTMENT_ID y el tipo NUMBER de tipo de datos.

  16. Agregue un séptimo parámetro repitiendo los pasos del 6 al 10 con el nombre TOTAL_SCORE y el tipo NUMBER de tipo de dato.

  17. Haga clic en Aceptar.

    CREATE OR REPLACE PROCEDURE ADD_EVALUATION
    (
      EVALUATION_ID IN NUMBER
    , EMPLOYEE_ID IN NUMBER
    , EVALUATION_DATE IN DATE
    , JOB_ID IN VARCHAR2
    , MANAGER_ID IN NUMBER
    , DEPARTMENT_ID IN NUMBER
    , TOTAL_SCORE IN NUMBER
    ) AS
    
    BEGIN
    
      NULL;
    
    END ADD_EVALUATION;
    

    El título del panel ADD_EVALUATION aparece en cursiva, lo que indica que el procedimiento todavía no se ha guardado en la base de datos.

    Debido a que la parte de ejecución del procedimiento solo contiene la sentencia NULL, el procedimiento no hace nada.

  18. Sustituya la sentencia NULL por esta sentencia:

    INSERT INTO EVALUATIONS (
      evaluation_id,
      employee_id,
      evaluation_date,
      job_id,
      manager_id,
      department_id,
      total_score
    )
    VALUES (
      ADD_EVALUATION.evaluation_id,
      ADD_EVALUATION.employee_id,
      ADD_EVALUATION.evaluation_date,
      ADD_EVALUATION.job_id,
      ADD_EVALUATION.manager_id,
      ADD_EVALUATION.department_id,
      ADD_EVALUATION.total_score
    );
    

    (La cualificación de los nombres de parámetro con el nombre de procedimiento asegura que no se confundan con las columnas que tienen los mismos nombres.)

  19. En el menú Archivo, seleccione Guardar.

Oracle Database compilará el procedimiento y lo guardará. El título del panel ADD_EVALUATION dejará de estar en cursiva. El panel Message - Log contiene el mensaje Compiled.

Consulte además:

Tutorial: Creación de una Función Autónoma

Este tutorial muestra cómo utilizar la herramienta Crear Función para crear una función autónoma denominada CALCULATE_SCORE que tiene tres parámetros y devuelve un valor de tipo NUMBER.

Para crear una función autónoma, utilice la herramienta de SQL Developer Crear Función o la sentencia DDL CREATE FUNCTION.

Pasos para crear una función independiente mediante la herramienta Crear función:

  1. En el marco Conexiones, expanda hr_conn.

  2. En la lista de tipos de objetos de esquema, haga clic con el botón derecho en Functions.

  3. En la lista de opciones, haga clic en Nueva función.

    Se abre la ventana Crear función.

  4. En Esquema, acepte el valor por defecto, HR.

  5. Para Nombre, cambie FUNCTION1 a CALCULATE_SCORE.

  6. En Tipo de devolución, seleccione NÚMERO en el menú.

  7. Haga clic en el icono Agregar parámetro.

    Aparecerá una fila debajo de las cabeceras de columna. Sus campos tienen los siguientes valores por defecto: Name, PARAM1; Mode, IN; No Copy, deseleccionado; Data Type, VARCHAR2; Default Value, vacío.

  8. Para Nombre, cambie PARAM1 a cat.

  9. Para Modo, acepte el valor por defecto, IN.

  10. Para Data Type, acepte el valor por defecto, VARCHAR2.

  11. Deje Valor por Defecto vacío.

  12. Agregue un segundo parámetro repitiendo los pasos del 7 al 11 con el nombre score y el tipo de dato NUMBER.

  13. Agregue un tercer parámetro repitiendo los pasos del 7 al 11 con el nombre weight y el tipo de datos NUMBER.

  14. Haga clic en Aceptar.

    Se mostrará la sentencia CREATE FUNCTION que ha creado la función. En el panel CALCULATE_SCORE se mostrará:

    CREATE OR REPLACE FUNCTION CALCULATE_SCORE
    (
      CAT IN VARCHAR2
    , SCORE IN NUMBER
    , WEIGHT IN NUMBER
    ) RETURN NUMBER AS
    
    BEGIN
    
      RETURN NULL;
    
    END CALCULATE_SCORE;
    

    El título del panel CALCULATE_SCORE aparece en cursiva, lo que indica que la función todavía no se ha guardado en la base de datos.

    Puesto que la única sentencia de la parte de ejecución de la función es la sentencia RETURN NULL, la función no hace nada.

  15. Sustituya NULL por score * weight.

  16. En el menú Archivo, seleccione Guardar.

    Oracle Database compilará la función y la guardará. El título del panel CALCULATE_SCORE dejará de estar en cursiva. El panel Message - Log contiene el mensaje Compiled.

Consulte además:

Cambio de Subprogramas Autónomos

Para cambiar un subprograma autónomo, utilice la herramienta Edit de SQL Developer o la sentencia DDL ALTER PROCEDURE o ALTER FUNCTION.

Pasos para cambiar un subprograma autónomo mediante la herramienta Editar:

  1. En el marco Conexiones, expanda hr_conn.

  2. En la lista de tipos de objetos de esquema, amplíe Functions o Procedures.

    Aparecerá una lista de funciones o procedimientos.

  3. Haga clic en la función o el procedimiento que desea cambiar.

    A la derecha del marco Conexiones, aparece un marco. Su separador superior tendrá el nombre del subprograma que desea cambiar. En el panel Código se mostrará el código que ha creado el subprograma.

    El panel Code está en modo de escritura. (Al hacer clic en el icono del lápiz, el modo pasa del modo de escritura al modo de solo lectura o al inverso).

  4. En el panel Code, cambie el código.

    El título del panel cambia a cursiva, lo cual indica que el cambio todavía no se ha guardado en la base de datos.

  5. En el menú Archivo, seleccione Guardar.

    Oracle Database compilará el subprograma y lo guardará. El título del panel dejará de estar en cursiva. El panel Message - Log contiene el mensaje Compiled.

Consulte además:

Tutorial: Prueba de una Función Autónoma

Este tutorial muestra cómo utilizar la herramienta SQL Developer Run para probar la función autónoma CALCULATE_SCORE.

Pasos para probar la función CALCULATE_SCORE con la herramienta Ejecutar:

  1. En el marco Conexiones, expanda hr_conn.

  2. En la lista de tipos de objetos de esquema, amplíe Functions.

  3. En la lista de funciones, haga clic con el botón derecho en CALCULATE_SCORE.

  4. En la lista de opciones, haga clic en Ejecutar.

    Se abrirá la ventana Ejecutar PL/SQL. Su marco Bloque PL/SQL incluye este código:

     v_Return := CALCULATE_SCORE (
         CAT => CAT,
         SCORE => SCORE,
         WEIGHT => WEIGHT
       );
    
  5. Cambie los valores de SCORE y WEIGHT a 8 y 0.2, respectivamente:

     v_Return := CALCULATE_SCORE (
         CAT => CAT,
         SCORE => 8,
         WEIGHT => 0.2
       );
    
  6. Haga clic en Aceptar.

    En el panel Código, se abre la ventana Ejecución, que muestra este resultado:

     Connecting to the database hr_conn.
     Process exited.
     Disconnecting from the database hr_conn.
    

    A la derecha del separador Running se encuentra el separador Output Variables.

  7. Haga clic en el separador Variables de salida.

    Aparecen dos marcos, Variable y Valor, que contienen los valores <Valor de devolución> y 1,6, respectivamente.

Consulte también: Guía del usuario de Oracle SQL Developer para obtener información sobre el uso de SQL Developer para ejecutar y depurar procedimientos y funciones

Borrado de Subprogramas Autónomos

Para borrar un subprograma autónomo, utilice el marco Conexiones de SQL Developer y la herramienta Borrar, o bien la sentencia DDL DROP PROCEDURE o DROP FUNCTION.

Atención: no borre el procedimiento ADD_EVALUATION ni la función CALCULATE_SCORE; los necesita para tutoriales posteriores. Si desea practicar el borrado de subprogramas, cree los simples y, a continuación, bórrelos.

Pasos para borrar un subprograma autónomo con la herramienta Borrar:

  1. En el marco Conexiones, expanda hr_conn.

  2. En la lista de tipos de objetos de esquema, amplíe Functions o Procedures.

  3. En la lista de funciones o procedimientos, haga clic con el botón derecho del mouse en el nombre de la función o procedimiento que desea borrar.

  4. En la lista de opciones, haga clic en Borrar.

  5. En la ventana Drop, haga clic en Apply (Aplicar).

  6. En la ventana Confirmation, haga clic en OK (Aceptar).

Consulte además: