powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Процедура не возвращает набор
10 сообщений из 10, страница 1 из 1
Процедура не возвращает набор
    #32335809
yurchello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите ламеру!
Есть процедура:

CREATE FUNCTION "public"."test" (char) RETURNS "public"."ports" AS'
select * from ports where ports.port_name like ''1''
'LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;


"public"."ports" - таблица, с ней всё в порядке.
ports.port_name это наименование порта(коммутатора).

при выполенении выдаёт:

ERROR: Cannot display a value of type RECORD

если в процедуре поправить RETURNS "public"."ports" - тож самое. Наверняка проблем аглупая. Но я пока недокумекал.
...
Рейтинг: 0 / 0
Процедура не возвращает набор
    #32335885
Stellar.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT test('1') INTO rResult;
...
Рейтинг: 0 / 0
Процедура не возвращает набор
    #32335961
yurchello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще непонятно!

вот результат:

www=# select test('1') into rResult;
SELECT
www=#


Явно что то не то.
может в функции что то не так? Хотя сам запрос срабатывает нормально. Я просто не хочу запрос вшивать в програму. Нада функция.
...
Рейтинг: 0 / 0
Процедура не возвращает набор
    #32335980
yurchello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне просто нада одно - чтобы процедура(функция) возвращала несколько столбцов, как в SyBase(не зря нёе деньги просят).
...
Рейтинг: 0 / 0
Процедура не возвращает набор
    #32336029
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tst=# create table ports (n serial,port_name text);
NOTICE: CREATE TABLE will create implicit sequence 'ports_n_seq' for SERIAL col
umn 'ports.n'
CREATE TABLE
tst=# CREATE FUNCTION "public"."test" (char) RETURNS "public"."ports" AS'
tst'# select * from ports where ports.port_name like ''1''
tst'# 'LANGUAGE 'sql';
CREATE FUNCTION
tst=#
...
Рейтинг: 0 / 0
Процедура не возвращает набор
    #32336040
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно проблема глупая! Правда такого собщения об ошибке я не получил...

Вот текст файла p3.sql
--drop FUNCTION "public"."test" (char);
CREATE or replace FUNCTION "public"."test" (char) RETURNS SETOF
"public"."ports" AS'
select * from ports where ports.port_name like ''1''
'LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
select * from test('1');
-----------
а вот результат
avalon>psql -f p3.sql tst
CREATE FUNCTION
n | port_name
---+-----------
(0 rows)
-----------------------
При отсутствии SETOF результат следующий :
psql:p3.sql:6: ERROR: ExecMakeTableFunctionResult: Invalid result from function
returning tuple
Почему это в твоей версии постгреса не сработало - спрашивай у
авторов plpgsql.so - кажется один из них это Tom Lane.
Кстати версию Postgresa ты так и не указал - уменя например
PostgreSQL 7.3.3 on i386-unknown-freebsd4.4, compiled by GCC 2.95.3
и
PostgreSQL 7.4 on i386-unknown-freebsd4.4, compiled by GCC 2.95.3
...
Рейтинг: 0 / 0
Процедура не возвращает набор
    #32336041
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно проблема глупая! Правда такого собщения об ошибке я не получил...

Вот текст файла p3.sql
--drop FUNCTION "public"."test" (char);
CREATE or replace FUNCTION "public"."test" (char) RETURNS SETOF
"public"."ports" AS'
select * from ports where ports.port_name like ''1''
'LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
select * from test('1');
-----------
а вот результат
avalon>psql -f p3.sql tst
CREATE FUNCTION
n | port_name
---+-----------
(0 rows)
-----------------------
При отсутствии SETOF результат следующий :
psql:p3.sql:6: ERROR: ExecMakeTableFunctionResult: Invalid result from function
returning tuple
Почему это в твоей версии постгреса не сработало - спрашивай у
авторов постгреса, возможно там только добавили возможность
возврата нескольких столбцов и не успели исправить парсер .
Кстати версию Postgresa ты так и не указал - уменя например
PostgreSQL 7.3.3 on i386-unknown-freebsd4.4, compiled by GCC 2.95.3
и
PostgreSQL 7.4 on i386-unknown-freebsd4.4, compiled by GCC 2.95.3
...
Рейтинг: 0 / 0
Процедура не возвращает набор
    #32336055
yurchello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё тоже самое!
www=# create table tt1(n serial,port_name text);
NOTICE: CREATE TABLE will create implicit sequence 'tt1_n_seq' for SERIAL column 'tt1.n'
CREATE TABLE
www=# create function "public"."proc1" (char) RETURNS "public"."tt1" AS'
www'# select * from tt1'
www-# LANGUAGE 'sql';
CREATE FUNCTION
www=# select proc1('f')
www-# ;
proc1
-------
(1 запись)

www=# insert into tt1(port_name) values ('amw1');
INSERT 105015 1
www=# insert into tt1(port_name) values ('amww');
INSERT 105016 1
www=# select proc1('f');
ERROR: Cannot display a value of type RECORD
www=#
...
Рейтинг: 0 / 0
Процедура не возвращает набор
    #32336061
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин - пока я писал исправлял пост ты уже успел по граблям по бегать 8)
И все таки скажи версию слоника!
...
Рейтинг: 0 / 0
Процедура не возвращает набор
    #32338532
yurchello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
psql (PostgreSQL) 7.3.4
поддерживает редактирование командной строки
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Процедура не возвращает набор
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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