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

select * from rpt(4,2014);

ОШИБКА: в запросе нет назначения для данных результата

select rpt(4,2014);

Тоже не работает

что неудивительно так select из ничего не получится сделать;
...
Рейтинг: 0 / 0
как вызвать функцию которая ничего не возвращает?
    #38611288
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.postgresql.org/docs/9.1/static/xfunc-sql.html
if you want to define a SQL function that performs actions but has no useful value to return, you can define it as returning void
...
Рейтинг: 0 / 0
как вызвать функцию которая ничего не возвращает?
    #38611294
daevy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
llemingчто неудивительно так select из ничего не получится сделать;

как это не получится?

# select pg_relation_size('pgbench_accounts');
pg_relation_size
------------------
1342955520
(1 row)

предположу что вы не все нужные параметры передаете
...
Рейтинг: 0 / 0
как вызвать функцию которая ничего не возвращает?
    #38611317
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
landy,

прежде чем задавать вопрос я провел доки.

и функция у меня как раз таки void. поэтому и ошибка вылазит.

perform тоже я пробовал и тут тоже ошибка вылазит
на db.stackoverflow.com утверждают что perfom можно использовать только внутри функции.
...
Рейтинг: 0 / 0
как вызвать функцию которая ничего не возвращает?
    #38611322
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
daevyllemingчто неудивительно так select из ничего не получится сделать;

как это не получится?

# select pg_relation_size('pgbench_accounts');
pg_relation_size
------------------
1342955520
(1 row)

предположу что вы не все нужные параметры передаете

тут уже видно что функция не void так как 1 row вернули. pg_relation_size скорее всего возвращает biging


если кому пригодится как workaround теперь возвращаю boolean и добавил в конце 'return 1=1'
...
Рейтинг: 0 / 0
как вызвать функцию которая ничего не возвращает?
    #38611348
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
test=# create function tst(integer,integer) returns void as '
test'# ' language sql;
CREATE FUNCTION
test=# select tst(1,2);
 tst 
-----
 
(1 row)

test=# 



Работает
Версия postgres какая?
...
Рейтинг: 0 / 0
как вызвать функцию которая ничего не возвращает?
    #38611353
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,

а текст функции или SQLSTATE (раз невнятное локализованное сообщение приводите) -- бабушка не велит сообщать ?

как и контекст вызова.

PERFORM вам нужно в контексте вызова внутри plpgsql
SELECT всегда нормально обрабатывает в SQL вызове, даже для void
есть тонкости в контексте вызова войд через dblink (который всегда что-то возвращает)

т.ч. напишите всё, что делаете -- "будем посмотреть"
...
Рейтинг: 0 / 0
как вызвать функцию которая ничего не возвращает?
    #38611357
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,

по моему у Вас ошибка в самой функции rpt, а не в SELECT из неё. Покажите целиком сообщение об ошибке.
...
Рейтинг: 0 / 0
как вызвать функцию которая ничего не возвращает?
    #38611362
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq,

вангую -- в самой ф-ии кесть некий (совсем другой) SELECT без INTO.
...
Рейтинг: 0 / 0
как вызвать функцию которая ничего не возвращает?
    #38611441
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqlleming,

а текст функции или SQLSTATE (раз невнятное локализованное сообщение приводите) -- бабушка не велит сообщать ?

как и контекст вызова.

PERFORM вам нужно в контексте вызова внутри plpgsql
SELECT всегда нормально обрабатывает в SQL вызове, даже для void
есть тонкости в контексте вызова войд через dblink (который всегда что-то возвращает)

т.ч. напишите всё, что делаете -- "будем посмотреть"

спасибо ваш коммент помого разобраться
у меня в теле функции был просто select без назначения его результат чему либо

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


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