Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как вызвать функцию которая ничего не возвращает? / 10 сообщений из 10, страница 1 из 1
10.04.2014, 14:34:53
    #38611268
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать функцию которая ничего не возвращает?
вот так не работает

select * from rpt(4,2014);

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

select rpt(4,2014);

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

что неудивительно так select из ничего не получится сделать;
...
Рейтинг: 0 / 0
10.04.2014, 14:45:11
    #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
10.04.2014, 14:46:58
    #38611294
daevy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать функцию которая ничего не возвращает?
llemingчто неудивительно так select из ничего не получится сделать;

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

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

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

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

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

perform тоже я пробовал и тут тоже ошибка вылазит
на db.stackoverflow.com утверждают что perfom можно использовать только внутри функции.
...
Рейтинг: 0 / 0
10.04.2014, 14:58:24
    #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
10.04.2014, 15:11:15
    #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
10.04.2014, 15:12:48
    #38611353
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вызвать функцию которая ничего не возвращает?
lleming,

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

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

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

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

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

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

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

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

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

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

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

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


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