En MySQL, una función almacenada (FUNCTION
) devuelve un solo valor, por lo que no se puede realizar directamente una inserción (INSERT
). Sin embargo, se puede usar la función dentro de una consulta INSERT INTO
.
DELIMITER //
CREATE FUNCTION obtener_valor()
RETURNS VARCHAR(100)
DETERMINISTIC
BEGIN
RETURN 'Hola desde la función';
END //
DELIMITER ;
INSERT INTO
INSERT INTO mi_tabla (columna1) VALUES (obtener_valor());
PROCEDURE
)
Si se necesita insertar directamente desde una función almacenada, la mejor opción es usar un procedimiento almacenado (PROCEDURE
) en lugar de una FUNCTION
:
DELIMITER //
CREATE PROCEDURE insertar_valor()
BEGIN
INSERT INTO mi_tabla (columna1) VALUES ('Valor insertado desde el procedimiento');
END //
DELIMITER ;
CALL insertar_valor();
Jorge García
Fullstack developer