Member 13140552 Ответов: 1

Как объявить переменную и присвоить значение данных postgress


я задаю значение в объявленной переменной p_emp_id чтобы получить максимум emp_id из таблицы сотрудников

как выбрать max_id в объявленной переменной, но не получаю результирующий набор инструкции Select

Что я уже пробовал:

CREATE OR REPLACE FUNCTION public.max_emp_id_select(
    
    )
  RETURNS TABLE(p_emp_id integer) AS
$BODY$

declare p_emp_id integer;
BEGIN
   RETURN QUERY 


select (COALESCE(max(new_emp_id),0) + 1) into p_emp_id
from Employee


select p_emp_id //here not getting variable value
end

END;

$BODY$
  LANGUAGE plpgsql VOLATILE

1 Ответов

Рейтинг:
11

Wendelius

Не уверен, правильно ли я понимаю вопрос, но вы должны возвращать только одно значение. Что-то вроде

CREATE OR REPLACE FUNCTION max_emp_id_select() RETURNS integer AS 
$BODY$
DECLARE
   p_emp_id integer;
BEGIN
   SELECT COALESCE(max(emp_id),0)
   INTO p_emp_id
   FROM Employee;

   RETURN p_emp_id + 1;
END;
$BODY$ 
LANGUAGE plpgsql;


Извините за любые опечатки. Прошло уже много лет с тех пор, как я в последний раз использовал pgplsql...

ДОБАВЛЕН
------
Попробуйте с помощью
UPDATE employee1 
SET emp_id = max_emp_id_select()
WHERE ...


Member 13140552

это что-то правильное, но мы хотим, чтобы это значение переменной было вложенным запросом, например, получить максимальное число и обновить другую таблицу до этого значения переменной

Wendelius

Можете ли вы опубликовать пример того, как вы собираетесь использовать эту функцию?

Member 13140552

Выберите COALESCE(max(emp_id),0)
В p_emp_id
от сотрудников;
обновление employee1 установить код emp_id = p_emp_id //здесь переменная p_emp_id не может получить доступ для обновления emp_id и также не работает в p_emp_id

Wendelius

Не уверен, правильно ли я понял ваш комментарий, но можете ли вы использовать эту функцию в заявлении? Смотрите обновленный пример.