I am writing a Postgres function as below
CREATE OR REPLACE FUNCTION dbo.get_managing_owner(p_imo integer, p_charter_id integer)
RETURNS TABLE(managing_owner character varying)
LANGUAGE plpgsql
AS $function$
BEGIN
RETURN QUERY
IF p_charter_id = 0
THEN
SELECT managing_owner
from dbo.vessel
where imo=p_imo
union
SELECT managing_owner
from dbo.charter c
where imo=p_imo;
ELSE
SELECT managing_owner
from dbo.vessel v
inner join dbo.charter c2
on v.imo =c2.imo
where c2.id =p_charter_id
union
SELECT managing_owner
from dbo.charter c
where id=p_charter_id;
END IF;
end;
$function$
;
I am getting syntax error near at IF, I am not able to find any problem here. Can someone please help me to fix this?
>Solution :
I think it should be like
BEGIN
IF p_charter_id = 0
THEN
RETURN QUERY SELECT managing_owner
from dbo.vessel
where imo=p_imo
union
SELECT managing_owner
from dbo.charter c
where imo=p_imo;
ELSE
RETURN QUERY SELECT managing_owner
from dbo.vessel v
inner join dbo.charter c2
on v.imo =c2.imo
where c2.id =p_charter_id
union
SELECT managing_owner
from dbo.charter c
where id=p_charter_id;
END IF;