Creación de funciones de tabla SQL
La tarea de crear funciones de tabla SQL se puede realizar en cualquier momento.
Antes de empezar
Antes de crear una función de tabla SQL, asegúrese de que tiene los privilegios necesarios para ejecutar la sentencia CREATE FUNCTION (tabla).
Restricciones
Procedimiento
Resultados
La sentencia CREATE FUNCTION (tabla) debe ejecutarse correctamente y debe crearse la función de tabla.
Ejemplo
- Ejemplo 1
- A continuación se muestra un ejemplo de una función de tabla SQL que se utiliza para realizar un seguimiento y auditar las actualizaciones realizadas en los datos salariales de los empleados:
Esta función actualiza el salario de un empleado especificado por updEmpNum, por la cantidad especificada por cantidad, y también registra en una tabla de auditoría denominada audit_table, el usuario que ha invocado la rutina, el nombre de la tabla que se ha modificado y el tipo de modificación realizada por el usuario. Una sentencia SELECT que hace referencia a una sentencia de cambio de datos en la cláusula FROM se utiliza para recuperar los valores de fila actualizados.CREATE FUNCTION update_salary (updEmpNum CHAR(4), amount INTEGER) RETURNS TABLE (emp_lastname VARCHAR(10), emp_firstname VARCHAR(10), newSalary INTEGER) LANGUAGE SQL MODIFIES SQL DATA NO EXTERNAL ACTION NOT DETERMINISTIC BEGIN ATOMIC INSERT INTO audit_table(user, table, action, time) VALUES (USER, 'EMPLOYEE', 'Salary update. Values: ' || updEmpNum || ' ' || char(amount), CURRENT_TIMESTAMP); RETURN (SELECT lastname, firstname, salary FROM FINAL TABLE(UPDATE employee SET salary = salary + amount WHERE employee.empnum = updEmpNum)); END
- Ejemplo 2
- A continuación se muestra un ejemplo de una función de tabla SQL:
CREATE TABLE t1(pk INT, c1 INT, date DATE) CREATE TABLE t1_archive LIKE T1% CREATE FUNCTION archive_tbl_t1(ppk INT) RETURNS TABLE(pk INT, c1 INT, date DATE) LANGUAGE SQL MODIFIES SQL DATA BEGIN ATOMIC DECLARE c1 INT; DECLARE date DATE; SET (c1, date) = (SELECT c1, date FROM OLD TABLE(DELETE FROM t1 WHERE t1.pk = ppk)); INSERT INTO T1_ARCHIVE VALUES (ppk, c1, date); RETURN VALUES (ppk, c1, date); END%
Qué hacer a continuación
Después de crear la función de tabla, es posible que desee invocar la función para probarla.