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
- Leer funciones SQL.
- Leer Características de las funciones SQL.
- Asegúrese de que dispone de los privilegios necesarios para ejecutar la sentencia CREATE FUNCTION (scalar).
Acerca de esta tarea
Procedimiento
Resultados
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; ENDEsta 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@