powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как получить ResultSet из функции PostGreSql?
20 сообщений из 20, страница 1 из 1
Как получить ResultSet из функции PostGreSql?
    #33191456
NilovSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем, привет!
Подскажите, пожалуйста. Как получить ResultSet из функции PostGreSql8.0.3(Windows) и
как должна выглядить эта PostGreSql-функция?
И как с ней работать на клиенте(в данном случае PHP)?
Если можно ссылку на пример.
С уважением
Нилов Сергей <nilov@vikoil.dn.ua>;
...
Рейтинг: 0 / 0
Как получить ResultSet из функции PostGreSql?
    #33191642
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
этот форум "неплохо оснащен"
в т.ч. тут есть поиск

Пример
http://195.128.121.254/forum/actualtopics.aspx?search=SETOF&submit=%CD%E0%E9%F2%E8&bid=7
...
Рейтинг: 0 / 0
Как получить ResultSet из функции PostGreSql?
    #33196484
GreyVS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4321этот форум "неплохо оснащен"
в т.ч. тут есть поиск

Пример
http://195.128.121.254/forum/actualtopics.aspx?search=SETOF&submit=%CD%E0%E9%F2%E8&bid=7
Pilot
Код: plaintext
1.
2.
3.
4.
5.
CREATE FUNCTION getMyTable()
  RETURNS SETOF mytable AS
$BODY$
    SELECT * FROM mytable;
$BODY$
  LANGUAGE 'sql' VOLATILE;


Делаю свою функцию так же и получаю в ответ после вызова:
ERROR: query-specified return row and actual function return row do not match
7.4 версия сервера, что не так?
...
Рейтинг: 0 / 0
Как получить ResultSet из функции PostGreSql?
    #33196861
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фсе что угодно, например другой язык ф-ии
LANGUAGE 'sql' VOLATILE;

для других языков - другой способ ретёрна сета.
приведите СВОЮ ф-ю и свой же вызов с ошибкой.
...
Рейтинг: 0 / 0
Как получить ResultSet из функции PostGreSql?
    #33197225
GreyVS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4321фсе что угодно, например другой язык ф-ии
LANGUAGE 'sql' VOLATILE;

для других языков - другой способ ретёрна сета.
приведите СВОЮ ф-ю и свой же вызов с ошибкой.
так создаю в EMS PostgreSQL Managr:
CREATE OR REPLACE FUNCTION getclients()
RETURNS SETOF clients AS
SELECT * FROM clients;
LANGUAGE SQL;
так получается сама функция:
CREATE OR REPLACE FUNCTION "public"."getclients" () RETURNS SETOF "public"."clients" AS
SELECT * FROM clients;
LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

так вызываю:
SELECT * FROM getclients();

вот ответ:
ERROR: query-specified return row and actual function return row do not match

язык подключён в базе один, plpgsql
...
Рейтинг: 0 / 0
Как получить ResultSet из функции PostGreSql?
    #33197321
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы ничего не пропустили?

CREATE OR REPLACE FUNCTION getclients()
RETURNS SETOF clients AS '
SELECT * FROM clients; '
LANGUAGE SQL;
...
Рейтинг: 0 / 0
Как получить ResultSet из функции PostGreSql?
    #33197345
GreyVS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4321Вы ничего не пропустили?

CREATE OR REPLACE FUNCTION getclients()
RETURNS SETOF clients AS '
SELECT * FROM clients; '
LANGUAGE SQL;
ну это само собой.... просто специально не напечатал.... Вы по существу можете что-то сказать? уже давно бьюсь... всю доку перерыл.... и всё на месте топчусь... :(
...
Рейтинг: 0 / 0
Как получить ResultSet из функции PostGreSql?
    #33197406
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
# create table mytable ( id integer, name text );
CREATE TABLE
# create function getMyTable() returns setof mytable as 'select * from mytable;' language 'sql';
CREATE FUNCTION
# insert into mytable values ( 1, 'lexa' );
INSERT 21359156 1
# select * from getMyTable();
id | name
----+------
1 | lexa
(1 row)

# alter table mytable drop column name;
ALTER TABLE
# select * from getMyTable();
ERROR: Query-specified return tuple and actual function return tuple do not match
...
Рейтинг: 0 / 0
Как получить ResultSet из функции PostGreSql?
    #33197437
GreyVS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LeXa NalBat# create table mytable ( id integer, name text );
CREATE TABLE
# create function getMyTable() returns setof mytable as 'select * from mytable;' language 'sql';
CREATE FUNCTION
# insert into mytable values ( 1, 'lexa' );
INSERT 21359156 1
# select * from getMyTable();
id | name
----+------
1 | lexa
(1 row)

# alter table mytable drop column name;
ALTER TABLE
# select * from getMyTable();
ERROR: Query-specified return tuple and actual function return tuple do not match

Я создаю свою функцию в тот момент, когда таблица уже есть и несколько записей в ней лежат... Честно говоря, я не совсем понял смысл Вашего поста... а в документации я уже читал как надо поступать, только эффекта ноль... :(
...
Рейтинг: 0 / 0
Как получить ResultSet из функции PostGreSql?
    #33197438
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасиб 2 ЛНБ, - вспомнил
- проскакивало уже - необходимо пересоздать ф-ю после переопределения таблицы - сменился тип
...
Рейтинг: 0 / 0
Как получить ResultSet из функции PostGreSql?
    #33197495
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GreyVSЯ создаю свою функцию в тот момент, когда таблица уже есть и несколько записей в ней лежат...То есть например так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
# create table mytable ( id integer, name text );
CREATE TABLE
# insert into mytable values (  1 , 'lexa' );
INSERT  21359162   1 
# alter table mytable drop column name;
ALTER TABLE
# insert into mytable values (  2  );
INSERT  21359164   1 
# create function getMyTable() returns setof mytable as 'select * from mytable;' language 'sql';
CREATE FUNCTION
# select * from getMyTable();
ERROR:  Query-specified return tuple and actual function return tuple do not match

4321необходимо пересоздать ф-ю после переопределения таблицыпереопределение таблицы - это drop/create

GreyVSЧестно говоря, я не совсем понял смысл Вашего поста... а в документации я уже читал как надо поступать, только эффекта ноль... :(Наверное надо делать drop/create table. :(
...
Рейтинг: 0 / 0
Как получить ResultSet из функции PostGreSql?
    #33197496
GreyVS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4321Спасиб 2 ЛНБ, - вспомнил
- проскакивало уже - необходимо пересоздать ф-ю после переопределения таблицы - сменился тип
Да нет в моём случае никакого переопределения таблиц! (хотя теперь буду и это знать, спасибо)
И всё же... куда рыть?
...
Рейтинг: 0 / 0
Как получить ResultSet из функции PostGreSql?
    #33197532
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GreyVSДа нет в моём случае никакого переопределения таблиц!Колонки не дропали?

select attname from pg_class, pg_attribute where relname='clients' and oid=attrelid and attisdropped;

GreyVSИ всё же... куда рыть?Попробуйте пересоздать таблицу, и затем - функцию.
...
Рейтинг: 0 / 0
Как получить ResultSet из функции PostGreSql?
    #33197536
GreyVS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мда :/ создал новую таблицу, только не EMS... а запросом CREATE.... и создал новую функцию на эту таблицу и всё заработало... странно как-то
Первая моя таблица, с которой не работало, была создана мастером в EMS PostgreSQL Manager .... что-то не так делает мастер при создании таблиц? Или может есть какая-то тонкость при работе с таким инструментом? Как-то не серьёзно это если такая ситуация является нормальной...
...
Рейтинг: 0 / 0
Как получить ResultSet из функции PostGreSql?
    #33197547
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DELETE FROM mytable;
VACUUM FULL;
select * from getMyTable();
...
Рейтинг: 0 / 0
Как получить ResultSet из функции PostGreSql?
    #33197586
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321DELETE FROM mytable;
VACUUM FULL;
select * from getMyTable();не помогает

DELETE FROM mytable;
VACUUM FULL;
select * from getMyTable();
insert into mytable values ( 2 );
select * from getMyTable();
ERROR: Query-specified return tuple and actual function return tuple do not match

P.S.: ошибка не вылетает, если возвращается 0 строк
...
Рейтинг: 0 / 0
Как получить ResultSet из функции PostGreSql?
    #33197688
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мдя-ссс
...
Рейтинг: 0 / 0
Как получить ResultSet из функции PostGreSql?
    #33199783
GreyVS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые! Расскажите у кого на какой версии сервера происходит такая ошибка?
у меня сервер 7.4.6 под FreeBSD 4.11
...
Рейтинг: 0 / 0
Как получить ResultSet из функции PostGreSql?
    #33199860
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На 7.3 ошибка наблюдается, на 8.0 - нет.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select version();
create table mytable ( id integer, name text );
create function getMyTable() returns setof mytable as 'select * from mytable;' language 'sql';
insert into mytable values (  1 , 'lexa' );
select * from getMyTable();
alter table mytable drop column name;
select * from getMyTable();
insert into mytable values (  2  );
select * from getMyTable();
drop function getMyTable();
drop table mytable;

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
# select version();
                                                 version
---------------------------------------------------------------------------------------------------------
 PostgreSQL  7 . 3 . 6  on i686-pc-linux-gnu, compiled by GCC gcc (GCC)  3 . 3 . 2   20040119  (Red Hat Linux  3 . 3 . 2 - 8 )
( 1  row)

# create table mytable ( id integer, name text );
CREATE TABLE
# create function getMyTable() returns setof mytable as 'select * from mytable;' language 'sql';
CREATE FUNCTION
# insert into mytable values (  1 , 'lexa' );
INSERT  4035406988   1 
# select * from getMyTable();
 id | name
----+------
   1  | lexa
( 1  row)

# alter table mytable drop column name;
ALTER TABLE
# select * from getMyTable();
ERROR:  Query-specified return tuple and actual function return tuple do not match
# insert into mytable values (  2  );
INSERT  4035406989   1 
# select * from getMyTable();
ERROR:  Query-specified return tuple and actual function return tuple do not match
# drop function getMyTable();
DROP FUNCTION
# drop table mytable;
DROP TABLE

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
# select version();
                                                     version
------------------------------------------------------------------------------------------------------------------
 PostgreSQL  8 . 0 . 3  on x86_64-unknown-linux-gnu, compiled by GCC gcc (GCC)  3 . 3 . 5   20050117  (prerelease) (SUSE Linux)
( 1  row)

# create table mytable ( id integer, name text );
CREATE TABLE
# create function getMyTable() returns setof mytable as 'select * from mytable;' language 'sql';
CREATE FUNCTION
# insert into mytable values (  1 , 'lexa' );
INSERT  4283156   1 
# select * from getMyTable();
 id | name
----+------
   1  | lexa
( 1  row)

# alter table mytable drop column name;
ALTER TABLE
# select * from getMyTable();
 id
----
   1 
( 1  row)

# insert into mytable values (  2  );
INSERT  4283157   1 
# select * from getMyTable();
 id
----
   1 
   2 
( 2  rows)

# drop function getMyTable();
DROP FUNCTION
# drop table mytable;
DROP TABLE
...
Рейтинг: 0 / 0
Как получить ResultSet из функции PostGreSql?
    #33200064
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeXa NalBatНа 7.3 ошибка наблюдается, на 8.0 - нет.слава яйсам!
(на 8-ку вроде перейдем)
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как получить ResultSet из функции PostGreSql?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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