Комментарии 17
Красивый код
0
Красиво, но заголовок вводит в заблуждение. Это не «чистый SQL», а SQL для Firebird. «WITH RECURSIVE», «GEN_ID», «RDB$DATABASE» и т.п. в стандартном SQL нет.
+3
НЛО прилетело и опубликовало эту надпись здесь
Конструкция USING в том числе с поддержкой рекурсии введена в SQL-1999 (SQL3) ( en.wikipedia.org/wiki/SQL ). Если какие-то СУБД не поддерживают этот стандарт, то это не проблемы шерифа.
RDB$DATABASE имеет аналог в каждой СУБД (DUAL в Oracle, SELECT без FROM в MS SQL и т.п.). Операции манипуляции с генераторами или последовательностями есть так же во всех уважающих себя СУБД. Так что указанный код вполне себе «SQL», с небольшими особенностями синтаксиса, которые не влияют на суть.
RDB$DATABASE имеет аналог в каждой СУБД (DUAL в Oracle, SELECT без FROM в MS SQL и т.п.). Операции манипуляции с генераторами или последовательностями есть так же во всех уважающих себя СУБД. Так что указанный код вполне себе «SQL», с небольшими особенностями синтаксиса, которые не влияют на суть.
+3
Хотя правильней, конечно, было бы написать «Машина Тьюринга на чистом SQL-1999» :)
-2
мне все-таки кажется, в заголовке эти подробности лишние :)
0
тогда это была бы неправда, «чистой» реализации любого из стандартов sql не существует. а «чистый sql» это правда, как правда и то, что sql-ы бывают разные
+1
Однозначный вин. Но считаю идею ненормальности раскрытой не полностью. Теперь напишите интерпретатор sql для получившегося интерпретатора машины Тьюринга. И запустите интерпритатор Тьюринга на получившемся интерпретаторе sql. (Тем не менее извращение заслуживает всяческих похвал)
+3
А что если хранить состояние в пользовательских переменных при помощи RDB$SET_CONTEXT и RDB$GET_CONTEXT?
0
Может быть, кому-то будет интересно: есть решатель судоку, написанный одним-единственным стейтментом Oracle SQL.
+1
Это не чистый SQL, если я не ослепла.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Машина Тьюринга на чистом SQL