Я создаю хранимую процедуру, которая выглядит следующим образом:Проблема с сохраненной процедурой Postgres - как мне ее решить?
CREATE FUNCTION get_components(_given_user_id integer) RETURNS TABLE (id integer, name varchar, active boolean, parent integer, type smallint, description varchar, email varchar, user_id integer, component_id integer, flag smallint) AS $body$
BEGIN
RETURN QUERY SELECT s.* FROM st_components s LEFT JOIN (SELECT a.* FROM st_users_components_perms a WHERE a.user_id=_given_user_id) ON a.component_id=s.id ORDER BY name;
END;
$body$ LANGUAGE plpgsql;
Проблема заключается в том, ON a.component_id = s.id ORDER BY имя не работает, потому что a.component_id выходит за рамки в этой точке , Есть ли способ объявить «a» как st_users_components_perms вне запроса? Как это решить? Большое спасибо за понимание!
Добро пожаловать в SO. Нет смысла в «LEFT JOIN», если вы не собираетесь использовать объединенную таблицу каким-либо образом. Если ваша функция является реальной сделкой, декларация также может быть упрощена. Помимо этого, пожалуйста, отформатируйте с помощью разрывов строк. Трудно это читать. –