update table set value1 = rownum where id >3
Только непонятно как оно сортирует строки.
update table set value1 = rownum where id >3
select * from tbl1 order by decode(:order_param, 1, param1, 2, param2, param3)будет работать. Причем на "стоимость" запроса это не повлияет так как сортировка делается после выборки данных.
select * fromВ этом примере, с помощю функции row_number() мы присваевам каждой строке номер который она получила бы в отсортированном массиве. А в обрамляющем запросе мы или просто сортируем запрос по этому столбцу чтобы получить прямую сортировку, или сортируем по 1/rn и получаем обратную сортировку
(select param1, param2, param3, row_number() over (order by decode(:param_num, 1, param1, 2, param2, 3, param3)) rn from tbl1)
order by decode(:order_destination, 'desc', 1/rn, rn)
SQLite - встраеваемая реляционная база данных. Простая и симпатичная. Единственное что в ней напрягает, то что она позволяет в поля любых типов записывать данные любых типов, а сами типы полей - просто подсказки, чтобы не забыть какие данные ты собирался там хранить изначально. Но тем не менее данные хранятся в таблицах выбираются селектом, а вставляются инсертом, а для настольных приложений больше обычно и не надо.Вообщем тактиль оказался достаточно простым скриптовым языком, инфы по нему я нашел очень мало, а на превращение скриптов в бинарник ушло больше времени, чем на написание программы. Превращение скриптов в бинарник достаточно нетривиальное. оно основано на загонянии скриптов и интерпретатора в один файл, который представляет из себя виртуальную файловую систему VFS. Для того, чтобы создать бинарник нужно скачать или собрать tclkit (интерпретатор в одном файле), из скриптов программы собрать starkit, а потом все это собрать в starpack.

Кстати, оказывается считыватель штрих кодов определяется как юсб клавиатура. При считывании штрих кода он делает вид, что нажимает на кнопки. За счет этого обеспечивается кроссплатформеность и отпадает нужда возится со считыванием битов, через юсб. По моему очень остроумное решнеие.После этого начались муки выбора технологии на которой писать, несмотря на то что задача стояла простая - сроки поджимали. Требования были простые: чтобы, во первых, работало на Леопарде, во вторых на ХР. Из-за сроков я сразу отбросил такие емкие технологии как Java. Решил взять что-то простое. Выбор был между Python и Tcl/Tk. Python мне всем нрависля и я уже почти выбрал его, как ...
INSTR - функция возвращает позицию подстроки внутри строкиЗапрос принимает входящий параметр - строку со значениями разделенными запятой (или любым другим подходящим символом) и превращает его во вьюху состоящую из значений входящей строки. Из этой вьюхи берутся данные для оператора IN.
REGEXP_SUBSTR - возвращает подстроку соответствующую регулярному выражению. Функция regexp_substr появилась только в десятой версии оракла, в предыдущих нужно шаманить с функциями SUBSTR и INSTR.
Что такое иерархические запросы можно прочитать на хабре (на русском) и в документации (на английском)

Пост в ЖЖ, о том что появилось поколение пользователей, которые никогда не видели дискету и пиктограмма с дискетой для них не очевидна.
У меня в голове накопилось некоторое количество идей, которые я хочу опубликовать. Начну с этой. Здесь и в будущем посты будут отмечены тегом идея.


Пост обновлен. Добавил очень важную информацию, о том когда этот способ использовать нельзя. Рекомендую ознакомится всем, кто собирается использовать этот маленький трюк
Задача: Если указан параметр :owner, то выводить объекты данног пользователя, в обратном случае выводить все объекты.Напишем три запроса. Первый не будет фильтровать ничего второй будет фильтровать по полю owner, а третий будет основаный на вышеприведенном способе, будет делать или первое или второе.
Задача: для объектов определенного пользователя возвращать список объектов определенного типа, если он указан. В противном случае выводить объекты всех типов.Модифицируем запросы первого примера:
Вывод: фильтр decode можно использовать в случаях когда условия фильтрации не является путем доступа, а является фильтром.