Я хочу создать функцию, которая возвращает все столбцы, скажем, 2 таблицы, которые объединены в запрос функции. Если бы это была только одна таблица, я мог бы просто использовать имя таблицы для определения типа возврата. Для большего количества таблиц единственный способ, которым я знаю, - это определить каждый столбец отдельно, что становится немного сложным, когда у меня много столбцов в таблицах. Есть ли способ сделать это проще?Функция, возвращающая все столбцы из более чем одной таблицы (PostgreSQL)
1
A
ответ
1
Вы можете создать представление и использовать его в качестве типа:
CREATE VIEW viewname AS select * from table1, table2, table3;
Тогда это объявление функции будет работать:
CREATE FUNCTION multiple_tables(...) RETURNS SETOF viewname AS
$$
return select * from table1 join table2 on (...) join table3 on (...) WHERE ...;
$$ language sql;
RETURNS viewname
без SETOF
возможно тоже.
Функция будет зависеть от viewname
, так что представление не может быть впоследствии структурно изменено без отказа от функции в первую очередь.
0
Для этого нет специальной функции.
Вы либо список всех столбцов в предложении RETURNS TABLE
:
CREATE FUNCTION
...
RETURNS TABLE (col1 type1, col2 type2, ...)
...
Или вы создаете TYPE
и использовать RETURNS SETOF ..
CREATE TAPE mytype (col1 type1, col2 type2, ...);
...
RETURNS SETOF mytype
...
Смежные вопросы
- 1. MySQL выбрать из более чем одной таблицы
- 2. NHibernate выбрать из более чем одной таблицы
- 3. SQl Удалить из более чем одной таблицы
- 4. Postgresql пользовательская функция, возвращающая таблицу
- 5. Как получить данные из более чем одной таблицы
- 6. Как извлечь данные из более чем одной таблицы в parse.com
- 7. PostgreSQL Функция, возвращающая набор результатов из имен динамических таблиц
- 8. Как соединить все столбцы с одной таблицы
- 9. SQLAlchemy присоединиться - возвращает все столбцы одной таблицы
- 10. выборки данных из более чем одной таблицы, используя Группировку по
- 11. Как получить значения из более чем одной таблицы из mysql?
- 12. Использование внешнего ключа из более чем одной таблицы в SQL
- 13. столбцы postgresql таблицы
- 14. INNER JOIN более чем одной таблицы
- 15. выполнение запросов на более чем одной таблицы
- 16. Удаление записей пользователей из более чем одной таблицы ASP.Net mvc
- 17. SQL Server НЕ СУЩЕСТВУЕТ из более чем одной таблицы
- 18. Функция в PostgreSQL для вставки из одной таблицы в другую?
- 19. показать большие записи из более чем одной таблицы mysql
- 20. Вставить все столбцы из одной таблицы в другую таблицу MYSQL
- 21. отображение данных из более чем одной таблицы в отчете кристалла
- 22. Как узнать данные из более чем одной таблицы в MYSQL
- 23. какой sql-запрос для обновления из более чем одной таблицы?
- 24. Доступ к данным из более чем одной таблицы - SQL
- 25. Как эффективно получать данные из более чем одной таблицы?
- 26. Вставьте из более чем одной таблицы, в зависимости от условий
- 27. .SelectMany() и получение данных из более чем одной связанной таблицы
- 28. SSIS - Обновить флаг выбранных строк из более чем одной таблицы
- 29. Функция Postgresql, не возвращающая таблицу при выборе
- 30. Oracle SQL Как фильтровать столбцы более чем одной переменной
Копирование имен столбцов из инструкции CREATE TABLE немного длиннее. Однако это не сложно. –
Вы можете создать составной тип (или использовать 'RETURNS TABLE'), который * имеет * составные типы в качестве полей. Доступ к столбцам таблицы будет длиннее, но вам не нужно копировать столбцы (и их типы). + Изменения в структуре исходной таблицы будут немедленно отражены. + Дублированные имена столбцов разрешены * таким образом. – pozs