metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2014-08-09 08:06 pm

SQL 'in' clause

Скажите мне такую вещь: список значений в in выражении в SQL можно вообще передать параметром, хоть в какой-нибудь СУБД?

В Firebird нельзя, ну я как-то не интересовался, как оно в других СУБД, использовал временную табличку и подзапрос с where exists (select 1 from TmpTbl ...) но что-то вот сегодня пришло в голову - а почему собственно нельзя?

[identity profile] cmotruc.livejournal.com 2014-08-09 05:41 pm (UTC)(link)
в оракле можно передать коллекцию:
select * from user_table1 where id in (select * from table(:my_collection))

table(:my_collection) -- это оператор, который коллекцию приводит к таблице

[identity profile] brainslugs.blogspot.com (from livejournal.com) 2014-08-09 06:07 pm (UTC)(link)
Ага и в постгресе тоже есть такое, там этот оператор unnest() называется

[identity profile] shaman237.livejournal.com 2014-08-09 07:44 pm (UTC)(link)
Разговор об sql, вас понесло в pl/sql

[identity profile] shaman237.livejournal.com 2014-08-09 07:58 pm (UTC)(link)
Хотя и меня ниже туда же дернуло :)

[identity profile] cmotruc.livejournal.com 2014-08-09 09:26 pm (UTC)(link)
любое решение будет расширением sql для соответствующей бд

в примере таки sql, но использующий коллецию pl/sql