Как в PostgreSQL можно объявить переменную функцию, которая принимает аргументы разных типов?

#postgresql #plpgsql

#postgresql #plpgsql

Вопрос:

Такую функцию определенно можно определить через C API, что можно увидеть, например, посмотрев на json_build_array():

введите описание изображения здесь

К сожалению, попытка создать подобную функцию SQL или pl / pgSQL завершается неудачей

 CREATE OR REPLACE FUNCTION my_function( VARIADIC _args anyelement[]) RETURNS ...
  

и это неудивительно, поскольку в документации PostgreSQL упоминается, что ‘VARIADIC’ работает только для массивов (и, похоже, нет такого понятия, как anyelement[] ). Кто-нибудь знает, как заставить это работать без необходимости писать функцию C?

Комментарии:

1. У меня нет времени на полный ответ. Я могу указать вам здесь . Поиск polymorphic . Это также приведет вас к полиморфным типам .

Ответ №1:

Сейчас это невозможно. Языки PLpgSQL и SQL вышли из игры, потому что нет массивов с полями разных типов. И PL / Perl или PL / Python просто не поддерживают, это то, что я знаю.