Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Хранимая процедура. Проблема с параметрами / 8 сообщений из 8, страница 1 из 1
03.09.2007, 15:24
    #34772024
Aries
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура. Проблема с параметрами
В общем тренируюсь пока с постгрисом.
[PostgreSQL 8.2.4]

Создана схема
Код: plaintext
1.
CREATE SCHEMA aries;

Добавлен домен
Код: plaintext
1.
2.
3.
4.
CREATE DOMAIN aries.d_id
   AS character( 32 )
   DEFAULT ''
   NOT NULL;

Создана таблица
Код: plaintext
1.
2.
3.
4.
5.
CREATE TABLE aries.ttest
(
  nindex aries.d_id
) 
WITHOUT OIDS;

Теперь создаю хранимую процедуру
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE OR REPLACE FUNCTION aries.get_test(OUT nindex aries.d_id) 
RETURNS record AS
$$
BEGIN
  DECLARE 
  cur record;
  FOR cur IN SELECT aa.nindex FROM aries.ttest aa
  LOOP
    nindex=cur.nindex;
    next record;
  END LOOP;
END
$$
LANGUAGE 'plpgsql' VOLATILE;

И выдает такую ошибку
Код: plaintext
1.
2.
ERROR: function result type must be aries.d_id because of OUT parameters
SQL state: 42P13

Вроде правильно параметр указал. Подскажите в чем ошибка.

Истина где-то там...
...
Рейтинг: 0 / 0
03.09.2007, 15:49
    #34772132
Ми
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура. Проблема с параметрами
Думаю, вместо next record нужно написать return next...
...
Рейтинг: 0 / 0
03.09.2007, 15:55
    #34772151
Aries
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура. Проблема с параметрами
To Ми
Не в этом грабли. А в возвращаемых параметрах.
"Результат должен быть типом aries.d_id"
Он и так этим типом.
Непонятки блин.

Истина где-то там...
...
Рейтинг: 0 / 0
03.09.2007, 16:32
    #34772332
Ми
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура. Проблема с параметрами
По-моему, если возвращается одно поле, Postgres не трактует его, как record.
Д.б. примерно так, имхо:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE OR REPLACE FUNCTION aries.get_test(OUT nindex test.d_id) 
RETURNS setof aries.d_id AS
$$
DECLARE 
  cur record;
BEGIN
  FOR cur IN SELECT aa.nindex FROM aries.ttest aa
  LOOP
    nindex=cur.nindex;
    --next record;
    return next;
  END LOOP;
END
$$
LANGUAGE 'plpgsql' VOLATILE;
...
Рейтинг: 0 / 0
03.09.2007, 16:36
    #34772352
Aries
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура. Проблема с параметрами
То Ми
Да причина в этом :) уже докопался.
Правда теперь пишет
Код: plaintext
1.
2.
3.
ERROR: syntax error at or near "FOR"
SQL state:  42601 
Character:  204 
Но это уже другая история, буду копать.

Истина где-то там...
...
Рейтинг: 0 / 0
03.09.2007, 17:17
    #34772509
Aries
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура. Проблема с параметрами
Что-то побороть не получается.
Помогите плиз побороть ошибку
Код: plaintext
1.
2.
3.
ERROR: syntax error at or near "FOR"
SQL state:  42601 
Character:  204 
Истина где-то там...
...
Рейтинг: 0 / 0
03.09.2007, 17:44
    #34772599
Ми
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура. Проблема с параметрами
Если код выглядит так, как в самом начале, тогда:
1. Почему DECLARE после BEGIN?
2. next record в цикле что делает?
Попробуйте код в предыдущем соообщении, должен работать.
...
Рейтинг: 0 / 0
03.09.2007, 17:58
    #34772634
Aries
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура. Проблема с параметрами
То Ми

Спасибо за помощь! Буду учится, учится и еще раз учится!

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


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