crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

radislav72
  опции профиля:
сообщение 26.9.2010, 14:17
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 1.4.2010
Пользователь №: 1585

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте!
Есть такая задача: надо в функции просмотреть некоторую совокупность строк из таблицы, обработать их и возвратить результат. Для примера я написал сильно упрощенную функцию, но она не работает: возвращаемое значение всегда null
CREATE OR REPLACE FUNCTION "finance"."bal" (m_id_ integer, dps_type_ integer, id_ integer) RETURNS double precision AS
$body$
DECLARE
  summv DOUBLE PRECISION;
  dps_row finance.deposites%ROWTYPE;
  res INTEGER;
BEGIN
  summv := 0;
  res := 1;
  FOR dps_row IN 
    SELECT id, summ FROM finance.deposites 
      WHERE m_id = m_id_ AND dps_type = dps_type_ AND id <> id_
    LOOP
    summv := summv + dps_row.summ;
  END LOOP;
  RETURN (summv);
END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;


В етом примере функция через переменную summv должна бы возвращать сумму нескольких строк из таблицы: но она всегда возвращает только значение null: dps_row.summ не содержит значения из таблиц.

Вызываю функцию, например так:
SELECT finance.bal(93, 9, -400)

В таблице гарантированно существуют строки по заданному условию.

Причем, если делать debug в среде SQL Manager 2007, то возвращаемое значение должно быть правильное, но результатом SELECTа всегда есть null: dps_row.summ не содержит значения из таблицы.

Что не так? Как правильно в PostgreSQL- функции организовать цикл по совокупности записей таблицы?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 11.6.2025, 6:30