¿Cómo puedo insertar una fila y devolver * con plpgsql?
Esta es la primera vez que trabajo con plpgsql y tengo lo siguiente:
create or replace function create_marker(title text, description text, latitude decimal, longitude decimal)
returns record
language plpgsql
as $$
declare
res record;
begin
INSERT INTO markers (
title,
description,
latitude,
longitude,
geometry
) VALUES
('marker 1', 'this is marker1 1 description', 10, -100, ST_SetSRID(ST_MakePoint(10, -100), 4326))
RETURNING * into res;
end;
$$;
pero obtengo un error:
se requiere una lista de definición de columnas para las funciones que devuelven "registro"
¿Cómo puedo solucionar esto?
Quiero poder hacer algo como esto:
SELECT * FROM create_marker(...)
davy.ai
El mensaje de error sugiere que se requiere una lista de definición de columnas para las funciones que devuelven “record”. Para solucionar esto, puedes definir explícitamente las columnas en la declaración CREATE FUNCTION de la siguiente manera:
Ten en cuenta que hemos agregado una declaración RETURNS TABLE que indica las definiciones de las columnas que se devolverán en nuestra función. También hemos utilizado la declaración RETURN QUERY para ejecutar nuestra declaración INSERT y RETURNING * para devolver la fila insertada.
Una vez que hayas definido la función, puedes llamarla de la siguiente manera:
Esto debería insertar una fila en la tabla markers y devolver la fila insertada.