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

Ну т.е. нужно написать уточнение, что нельзя в анонимном блоке

сделать как в ms sql, а в принципе есть вариант?

20 ответов

24 просмотра

и в анонимном блоке можно

Alexey-Erpilev Автор вопроса
Alexey Bulgakov
и в анонимном блоке можно

Но у тебя нет declare на скрине

Alexey Erpilev
Но у тебя нет declare на скрине

мне тебе все варианты писать? ты можешь сам в гугле найти. это не какое-то тайное знание. просто анонимный блок - это аналог процедуры, он не создается и не имеет имени. а так это код на процедурном языке расширении. и там можно declare писать

Alexey-Erpilev Автор вопроса
Alexey Bulgakov
мне тебе все варианты писать? ты можешь сам в гугл...

Вариант аналога от Юрия Шапоренко напиши

Alexey Erpilev
Вариант аналога от Юрия Шапоренко напиши

Если мне не изменяет память, это DBeaver'овская имплементация psql-ного \set (в нем обращение к переменным также идет не через current_setting, а через двоеточие и название переменной)

Alexey Erpilev
Вариант аналога от Юрия Шапоренко напиши

DO $$DECLARE p_param int := 4; BEGIN perform 'select * from cron.job j where jobid = p_param'; END$$; только ты не понял, результат-то куда ты собрался выводить. это уже pg plsql

Alexey-Erpilev Автор вопроса
Alexey Bulgakov
DO $$DECLARE p_param int := 4; BEGIN perfor...

Ну да, вывести в той же DbForge набор строк не получится, как я понимаю?

Alexey Erpilev
Ну да, вывести в той же DbForge набор строк не пол...

нет, это же анонимной блок, а не запрос.

Alexey-Erpilev Автор вопроса
Iurii Shaporenko
screenshot

Спасибо, это и имел в виду, когда заметку писал

Alexey Erpilev
Спасибо, это и имел в виду, когда заметку писал

Да не за что. Только учтите, что такие приколы с переменными, объявленными не через DECLARE в анонимном блоке/процедуре/функции, а через локальные/сессионные параметры, дают оверхэд по производительности, так как функция current_setting не иммутабельна, и для каждой строки значение переменной будет заново извлекаться

Alexey-Erpilev Автор вопроса
Iurii Shaporenko
Да не за что. Только учтите, что такие приколы с п...

Ну получается, не стоит что-то в заметке менять, т.к. с точки зрения человека, кот-й писал скрипты с параметрами на t-sql все верно, это люди, работающие только с pg, могут в недоумении быть

Alexey Erpilev
Ну получается, не стоит что-то в заметке менять, т...

Не совсем. Возможность использовать переменные в постгресе есть, и где-то они могут быть вполне уместны даже. Но можно и головняк на ровном месте поймать Например, по индексированному полю разница минимальна или ее нет вообще С переменной Limit (cost=0.56..11.16 rows=10 width=494) (actual time=0.072..0.082 rows=10 loops=1) -> Index Scan using sap_analisis_debet_customerreference_idx on analisis_debet (cost=0.56..356.73 rows=336 width=494) (actual time=0.070..0.078 rows=10 loops=1) Index Cond: (("CUSTOMERREFERENCE")::text = current_setting('my_vars.doc_id'::text)) Planning time: 0.462 ms Execution time: 0.159 ms Со значением Limit (cost=0.55..11.15 rows=10 width=494) (actual time=0.067..0.077 rows=10 loops=1) -> Index Scan using sap_analisis_debet_customerreference_idx on analisis_debet (cost=0.55..356.73 rows=336 width=494) (actual time=0.066..0.073 rows=10 loops=1) Index Cond: (("CUSTOMERREFERENCE")::text = '202106300ZBDR0ZRSF0Z02010000014325'::text) Planning time: 0.494 ms Execution time: 0.145 ms

Iurii Shaporenko
Не совсем. Возможность использовать переменные в п...

тут уже оптимизатор работает. а он по-разному может строить планы для константы и переменной и понятно почему

Alexey-Erpilev Автор вопроса
Iurii Shaporenko
Не совсем. Возможность использовать переменные в п...

Я работаю с оракелом в проде, просто жирные селекты пишутся очень-очень редко, обычно оно из приложения вызывается. В PG, наверное, так же?

Alexey Bulgakov
тут уже оптимизатор работает. а он по-разному може...

Ну да, я плюс-минус это и имел в виду. То есть вот такие переменные в ПГ — это не просто инлайн какого-то значения в код, а обращение к функции, получающей значение сессионного параметра. А там уже зависит и от необходимости каста переменной к нужному типу и самого этого типа, и от наличия индекса по полю фильтрации, и от кардинальности значений, и еще куча вещей, которые аффектят на оптимизатор

Alexey Erpilev
Я работаю с оракелом в проде, просто жирные селект...

Если запросы вызываются из приложения, то параметры логичнее разруливать именно на уровне приложения. С поправкой на защиту от инъекций и всякого такого, разумеется

Alexey Erpilev
Ну получается, не стоит что-то в заметке менять, т...

не знаю как у кого, но у меня выражение "передавать параметры запросу" совершенно однозначно обозначает bind-параметры.

Alexey-Erpilev Автор вопроса
Ilya Portnov
не знаю как у кого, но у меня выражение "передават...

ты с ms sql не работал, видимо. можно прям скрипты фигачить с переменными и в оконцовке селект

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

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

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
кто-то пользуется компонентами rx ? как их лучше ставить, через OPM? (lazarus)
Iluha Companets
15
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
Слушайте, ещё такая интересная задачка. Сделан аудит действий пользователей через триггеры в базе, соответственно каждый пользователь имеет свой логин и пароль в базе. Это пре...
Сергей Бычков
12
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
вопрос по москвину - не понимаю вот такого вопроса похоже Сколько разных всегда завершающихся функций с типом a -> a -> b -> a -> a можно реализовать? Две функции одинаково...
Fedor
11
t.me/<username> и tg://user?id=<id> отваливаются по понятным причинам
Denis 🐍|👑 | darling! 🥰
7
Кстати, раз про скачивание файлов разговор зашел) Сделал бота для себя (транскрибирующего и суммаризирующего встречи) но не ожидал что за 2 месяца 10к пользователей набежит😅...
Andrey Obolenskiy
8
Карта сайта