Error de PostgreSQL al crear una función con columnas variables utilizando RECORD.
Tengo esta función que debería devolver columnas variables, ¿puede ayudarme a lo que está mal con mi código?
CREATE OR REPLACE FUNCTION functions.search(column_name VARCHAR(40))
RETURNS SETOF RECORD AS $$
DECLARE
rec RECORD;
BEGIN
RETURN QUERY EXECUTE format('SELECT %I FROM students_table');
END;
$$ LANGUAGE plpgsql;
Llamada:
SELECT * FROM functions.search(
('Student Id', 'Subect')
) as ("Student Id" bigint, "Subect" text)
Aquí está mi error
ERROR: function functions.search(record) does not exist
LINE 1: SELECT * FROM functions.search(
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
SQL state: 42883
Character: 15
Muchas gracias
davy.ai
Hay un error de sintaxis en el código de la función. La declaración select está faltando una comilla de cierre después de students_table. Además, la función espera un solo argumento como VARCHAR, pero la llamada está pasando dos valores como un registro.
Para solucionar el error, modifica el código de la función para aceptar un registro como entrada y usa el parámetro column_name para generar dinámicamente la declaración select. Aquí tienes una versión corregida de la función:
Y aquí está la llamada corregida a la función:
Esto debería ejecutarse correctamente y devolver las columnas deseadas.