powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Название таблицы и столбца как параметры функции
4 сообщений из 4, страница 1 из 1
Название таблицы и столбца как параметры функции
    #33680569
zubr3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скажите пожалуйста как выполнить в фунции такую конструкцию:
max_value:=SELECT max(column_name) FROM table_name;
pgAdmin ругается на то, что такая строка в его представлении:
SELECT SELECT max($1) FROM $2;
Хотя последовательность параметров была обратной и если убрать SELECT то при выполнении будет выдаваться ошибка, что столбца $2 такого нет.
В чем причина, и как эту проблему решить?
...
Рейтинг: 0 / 0
Название таблицы и столбца как параметры функции
    #33680693
.Guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно использовать dynamic execution, т.е, в таком роде:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
DECLARE MAX_VALUE INTEGER;
BEGIN
  EXECUTE 'SELECT max(' 
  || column_name ||
  ') FROM ' 
  || table_name 
  INTO MAX_VALUE;

  RETURN MAX_VALUE;
END
...
Рейтинг: 0 / 0
Название таблицы и столбца как параметры функции
    #33681197
zubr3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо за хорошую подсказку!
У меня возникли некоторые вопросы. Что-то странное творится - при выполнении такой простой функции:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE OR REPLACE FUNCTION maximum(table_name varchar, column_name varchar)
RETURNS INTEGER AS
$BODY$
DECLARE
	MAX_VALUE INTEGER;
BEGIN
	EXECUTE 'SELECT max(' || column_name || ') FROM ' || table_name INTO MAX_VALUE;
	RETURN MAX_VALUE;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
Если вызывать ее SELECT maximum('...','...') то все проходит нормально, однако если вызвать SELECT maximum( " ... " , " ... " ) то выдается сообщение:
ERROR: current transaction is aborted, commands ignored until end of transaction block
И повторные попытки правильного вызова выдают ту же ошибку. Подскажите как принудительно завершить неверный вызов и в чем разница между ' и "
...
Рейтинг: 0 / 0
Название таблицы и столбца как параметры функции
    #33681596
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в том что 'value' это данные типа текст а "табле наме" это для названий таблиц схем колонок и т.д.

в твоей вункции явно указано
maximum(table_name varchar, column_name varchar)

VARCHAR

поэтому и передавать надо через ' '
если бы ты хотел вызвать эту функцию со значением поля то
вызывал бы так
select * from maximum(field_name)
или
select * from maximum("field_name")

причем "filed_name" != "FielD_NaME" ,а field_name = Field_naME =FIELD_NAME
т.е "" касе сенсетив.

ваще, умеющий читать человек найдет это в доках .. для людей с плохим англиским там даже примеры есть.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Название таблицы и столбца как параметры функции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]