Saltar al contenido

Características de las PL-SQL Function en Oracle y Procedimientos

Los procedimientos PL/SQL son subprogramas que están compuestos por una serie de sentencias SQL.

Las funciones y procedimientos PL/SQL no tienen casi ninguna diferencia, por lo tanto una función o procedimiento está constituido por un conjunto de sentencias SQL y PL/SQL correctamente agrupados para efectuar una tarea específica.

Los procedimientos o funciones PLSQL actúan de manera dinámica admitiendo los parámetros que les pueden ser pasados antes de su ejecución, por lo tanto estas pueden realizar diferentes tareas dependiendo siempre de los parámetros que le hayan sucedido.

Los procedimientos y funciones de Oracle se componen por una parte en la que se definen de variables y cursores, otra parte que se ejecuta está compuesta por sentencias SQL y PLSQL y otra opcional enfocada a manejar las excepciones y los errores que pueden ocurrir mientras se de la ejecución.

Los pasos de Oracle para ejecutar un procedimiento o función

  • Verifica si es que el usuario tiene permiso de ejecución.
  • Verifica si es valido el procedimiento o función.
  • Para finalmente llevarlo a la ejecución.

Libro-Reporte GRATIS: “Cómo Construir un SELECT Eficiente en ORACLE en Solo 7 Pasos” ¡ Haz Click Aquí y Descárgalo Ahora !

Las ventajas de usar los procedimientos y funciones en lugar de scripts SQL

  • Facilita enormemente la gestión y la seguridad.
  • Mejora notablemente el rendimiento al estar compilados y almacenados en la base de datos.
  • Mejora la gestión de la memoria.
  • Mejora y ayuda a tener mayor productividad y efectividad.

La diferencia más notable entre los procedimientos y las funciones es que una función al final de su ejecución devuelve el valor al bloque PL/SQL que la llamó.

La sintaxis para construir funciones es la siguiente:

CREATE [OR REPLACE]

FUNCTION <fn_name>[(<param1> IN <type>, <param2> IN <type>, …)]

RETURN <return_type>

IS

result <return_type>;

BEGIN

return(result);

[EXCEPTION]

— Sentencias control de excepcion

END [<fn_name>];

Te propongo que pruebes de inmediato este ejemplo en tu Base de Datos con tus propias tablas,  PL-SQL Procedures en OraclePL-SQL Function en Oracle, para que comiences a ejercitar la mano y aprendas a dominar estas características en tus PL-SQL Packages en Oracle.

Estoy muy interesado en conocer tu opinión y/o comentario sobre este artículo, también cuéntame sobre qué es lo que quieres saber de PL-SQL Function en Oracle y/o dime cuál es tu principal frustración a la hora de trabajar con PL-SQL Function en Oracle. Estaré muy atento respondiendo tus preguntas y/o comentarios, gracias.

Saludos

Roberto Vicencio – Autor del Libro-Reporte:

Cómo Construir un SELECT Eficiente en ORACLE en Solo 7 Pasos

2 comentarios en «Características de las PL-SQL Function en Oracle y Procedimientos»

  1. una pregunta como hago para que una funcion actualice el salario y comision de un empleado segun su codigo ingresado como parametro,ademas tengo que crear una excepcion para no permitir que un el empleado no tenga menos que el salario minimo 850, aparte imprimir en pantalla el nombre del usuario actualizado y el nombre de su departamento.Finalmente, una vez actualizado que la funcion me devuelva 1 si la operacion se realizo correctamente y 0 si ocurrio alguna excepcion

    Estoy probando con este script, pero a la hora de ejecutarlo me sale un error.

    CREATE OR REPLACE FUNCTION ACTUALIZAR(v_codigo IN number)RETURN number
    AS
    v_emp EMP%ROWTYPE;
    v_dept DEPT%ROWTYPE;
    V_SALMIN EXCEPTION;

    BEGIN

    IF v_emp.sal < 850 THEN
    RAISE V_SALMIN;
    return 0;
    END IF;

    UPDATE EMP e
    SET e.sal = 900,
    e.comm = 1200
    where e.empno = v_codigo;
    COMMIT;
    DBMS_OUTPUT.put_line('Nombre del EMP : '||v_emp.ename||
    'Nomb Departamento : '|| v_dept.dname);
    return 1;
    ROLLBACK;

    EXCEPTION
    WHEN V_SALMIN THEN
    DBMS_OUTPUT.put_line('Error salario menor al salario mínimo');
    END ;
    /

    1. Hola Hector, gracias por comunicarte y por tu comentario, creo que la función que creaste esta bien encaminada, solo olvidaste incluir algunas cosas para que funcione bien como obtener el nombre del empleado y del departamento, ademas de ubicar correctamente los return, aquí te mando la función con los cambios realizados, coloca los campos que falten, compilala y me cuentas, gracias.

      CREATE OR REPLACE FUNCTION ACTUALIZAR(v_codigo IN number)RETURN number
      AS
      v_emp EMP%ROWTYPE;
      v_dept DEPT%ROWTYPE;
      V_SALMIN EXCEPTION;

      BEGIN

      — buscar nombre del empleado —
      select e.ename
      into v_emp.ename
      from EMP e
      where e.empno = v_codigo;

      — buscar nombre del departamento —
      select d.dname
      into v_dept.dname
      from DEPT d
      where (campo id dept?) = (variable id dept?);

      IF v_emp.sal < 850 THEN
      RAISE V_SALMIN;
      END IF;

      UPDATE EMP e
      SET e.sal = 900,
      e.comm = 1200
      where e.empno = v_codigo;

      COMMIT;

      DBMS_OUTPUT.put_line('Nombre del EMP : '||v_emp.ename||
      'Nomb Departamento : '|| v_dept.dname);

      return 1;

      EXCEPTION
      WHEN V_SALMIN THEN
      DBMS_OUTPUT.put_line('Error salario menor al salario mínimo');
      return 0;
      when others then
      DBMS_OUTPUT.put_line('Error en proceso');
      ROLLBACK;
      return 0;
      END ;
      /

      PD: Ya obtuviste mi libro-reporte sobre "Como Construir un SELECT Eficiente en Oracle en Solo 7 Pasos", si aun no lo tienes puedes obtenerlo desde aquí: https://dominatuspackagesen0racle.com/

      Saludos
      Roberto Vicencio – Para Tu Éxito con Oracle.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.