Creación de funciones escalares SQL

Las funciones escalares SQL se crean cuando se diseña una base de datos o se desarrollan aplicaciones. Las funciones escalares SQL son útiles cuando hay un beneficio identificable al encapsular una pieza de lógica reutilizable. Estas funciones son llamadas por sentencias SQL que se utilizan dentro de aplicaciones y objetos de base de datos.

Antes de empezar

Antes de crear una función SQL, complete las siguientes tareas:

Acerca de esta tarea

Antes de crear una función escalar SQL, o al solucionar problemas relacionados con su uso, tenga en cuenta las restricciones de las funciones SQL.

Procedimiento

  1. Defina la sentencia CREATE FUNCTION (escalar):
    1. Especifique un nombre para la función.
    2. Especifique un nombre y un tipo de datos para cada parámetro de entrada.
    3. Especifique la palabra clave RETURNS y el tipo de datos del valor de retorno escalar.
    4. Especifique la palabra clave BEGIN para introducir el cuerpo de la función.
      Nota: No se recomienda utilizar la palabra clave BEGIN ATOMIC para funciones nuevas.
    5. Especifique el cuerpo de la función. Especifique la cláusula RETURN y un valor de retorno escalar o una variable.
    6. Especifique la palabra clave END.
  2. Ejecute la sentencia CREATE FUNCTION (escalar) desde una interfaz compatible.

Resultados

Se ejecuta la sentencia CREATE FUNCTION (escalar) y se crea la función escalar.

Ejemplo

Ejemplo 1
Un ejemplo de función SQL compilada.
  CREATE FUNCTION GetPrice (Vendor CHAR(20), Pid INT)         
    RETURNS  DECIMAL(10,3) 
    LANGUAGE SQL  
    MODIFIES SQL
    BEGIN 
      DECLARE price DECIMAL(10,3); 

      IF Vendor = 'Vendor 1' 
        THEN SET price = (SELECT ProdPrice FROM V1Table WHERE Id = Pid); 
      ELSE IF Vendor = 'Vendor 2' 
        THEN SET price = (SELECT Price 
                          FROM V2Table 
    		 		 	  WHERE Pid = GetPrice.Pid); 
      END IF; 
  
    RETURN price; 
  END 

Esta función recibe dos parámetros de entrada y devuelve un único valor escalar, basado condicionalmente en los valores de los parámetros de entrada. Requiere la declaración y uso de una variable local que se denomina precio para mantener el valor a devolver hasta que la función retorne.

Ejemplo 2
Ejemplo de definición de función SQL compilada que contiene un cursor, una sentencia manejadora de condición y una sentencia REPEAT.
  CREATE FUNCTION exit_func(a INTEGER)
    SPECIFIC exit_func
    LANGUAGE SQL
    RETURNS INTEGER
    BEGIN 
      DECLARE val INTEGER DEFAULT 0;

      DECLARE myint INTEGER DEFAULT 0;

      DECLARE cur2 CURSOR FOR
        SELECT c2 FROM udfd1 
          WHERE c1 <= a 
          ORDER BY c1;

      DECLARE EXIT HANDLER FOR NOT FOUND
        BEGIN
          SIGNAL SQLSTATE '70001' 
          SET MESSAGE_TEXT = 
            'Exit handler for not found fired';
        END;

    OPEN cur2;

    REPEAT
      FETCH cur2 INTO val;
      SET myint = myint + val;
    UNTIL (myint >= a) 
    END REPEAT;

    CLOSE cur2;

    RETURN myint;

  END@

Qué hacer a continuación

Ejecuta la función escalar que has creado para probarla.