172 похожих чатов

Всем привет. Немного туплю с RETURNING. INSERT INTO t(val) SELECT key FROM tt RETURNING myfnc(t_id); Это

всё работает, но мне это надо поместить в функцию теперь и получается, что мне результат не нужен. Как бы его граммотно выкинуть? У кого нибудь есть идеи?

21 ответов

18 просмотров

PERFORM https://www.postgresql.org/docs/current/plpgsql-statements.html#PLPGSQL-STATEMENTS-GENERAL-SQL

P- Автор вопроса

PERFORM Вам поможет, да. С другой стороны — почему бы просто не убрать RETUNRING, если возможно (например, если myfunc() — не volatile, то какая разница, выполняется она или нет)?

P- Автор вопроса

Не поможет. Я добавляю новую запись и мне нужны новые id в эту функцию. Функция как раз volatile и мне нужно получить именно новые id и передать их в функцию

P
Не поможет. Я добавляю новую запись и мне нужны но...

Хмм... похоже на то, в самом деле. Ну тогда всё-таки верните результат в какую-то переменную, что ж делать.

P
Не поможет. Я добавляю новую запись и мне нужны но...

Тогда я вообще не понял проблемы. Накидайте пример что ли.

Ilya Anfimov
Тогда я вообще не понял проблемы. Накидайте приме...

Ну вот посмотрите: https://dbfiddle.uk/MP_ukKkP Как тут избавиться от dummy?

P- Автор вопроса
Yaroslav Schekin
Ну вот посмотрите: https://dbfiddle.uk/MP_ukKkP Ка...

Ого, как подробно! Да, это именно оно. Я хотел в переменную, но Returning id into _переменная ругается, если вставилось больше 1 строки. Остановился на cte шке, но мне все равно не нравится что то такое решение

P
Ого, как подробно! Да, это именно оно. Я хотел в п...

Я как-то не вижу другого (казалось бы, синтаксис тупо не позволяет). :( Может, ещё кто-то что-то другое придумает...

Yaroslav Schekin
Ну вот посмотрите: https://dbfiddle.uk/MP_ukKkP Ка...

execute $$insert...returning myfnc(...)$$; Вроде правильный результат, если я правильно понял - возврат из returning просто отбрасывается, хоть и выполняется: https://dbfiddle.uk/_AqMiz3b

Nick Nalbantov
execute $$insert...returning myfnc(...)$$; Вроде ...

Да, правильный. Но это, всё же, выполнение "динамического" SQL (мне почему-то показалось, что автор вопроса не имел этого в виду)... Может, ему как раз подойдёт. :)

P- Автор вопроса
Nick Nalbantov
execute $$insert...returning myfnc(...)$$; Вроде ...

Хмммммммм интересно Завтра попробую

Yaroslav Schekin
Ну вот посмотрите: https://dbfiddle.uk/MP_ukKkP Ка...

Да, внезапно. Абьюзом потрохов PL/pgSQL разве что https://dbfiddle.uk/a2toj5Ib

Ilya Anfimov
Да, внезапно. Абьюзом потрохов PL/pgSQL разве что...

Да уж. ;( Про это bug report надо написать, мне кажется.

Ilya Anfimov
Почему?

А где написано, что FOUND можно что-то присваивать (а если можно, то зачем)?

Yaroslav Schekin
А где написано, что FOUND можно что-то присваивать...

А где написано, что нельзя? Написано только, что это переменная, и она принимает значения true и false (видимо, это boolean).

Ilya Anfimov
А где написано, что нельзя? Написано только, что ...

Нигде, насколько я знаю. Просто это на первый взгляд неожиданно / нелогично, IMHO.

Yaroslav Schekin
Нигде, насколько я знаю. Просто это на первый взгл...

По-моему наоборот. Так-то я просто поискал какую-нибудь заранее объявленную переменную, эта первой пришла на ум.

Yaroslav Schekin
Нужно больше мнений, мне кажется. ;)

Или от Тома Лейна. (Который просто скажэт, что мы переделываем синтаксис, и INSERT/UPDATE/DELETE могут работать без INTO дажэ с RETURNING).

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта