Поведение запроса отличается между вызовом SELECT и FUNCTION - PullRequest
0 голосов
/ 07 декабря 2010

Фон

Создание функции-оболочки для оператора SQL.

Проблема

Функция возвращает 1 строку, тогда как запрос, на котором основана функция, возвращает более 100 строк. Значения параметров идентичны:

SELECT * FROM as_rpt.tasc_fsa( 'ABC', '2010-01-01'::date, '2011-01-01'::date );

Функция tasc_fsa - это оператор SELECT с несколькими объединениями таблиц; язык функций - «sql», а не «plpgsql».

Вопрос

По каким причинам функция возвращает одну строку, но точно такой же запрос, который использует функция, если не вызывается через функцию, правильно возвращает более 100 строк?

Любые идеи будут наиболее полезны.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 07 декабря 2010

Использовали ли вы RETURN SETOF ...?

SETOF указывает, что вы хотите вернуть более 1 строки.

Я уверен, что вы забыли использовать«ВОЗВРАТ НАСТРОЙКИ».

0 голосов
/ 07 декабря 2010

Вы упоминаете функцию "объединяет несколько таблиц".Ваш пример, очевидно, нет.Если выполняются объединения, возможно, это приводит к меньшим результатам.

Способ интерпретации дат - это еще одна возможность.Когда вы получаете 1 ответ, находится ли он в указанном вами диапазоне?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...