C'est arrivé au bureau aujourd'hui. Je n'ai pas l'intention de faire une telle chose, mais pourriez-vous théoriquement écrire un compilateur en SQL? À première vue, il me semble être complet, bien qu'extrêmement lourd pour de nombreuses catégories de problèmes.
S'il n'est pas complet, que faudrait-il pour le devenir?
Remarque: je n'ai aucun désir de faire quoi que ce soit comme écrire un compilateur en SQL, je sais que ce serait une chose stupide à faire, donc si nous pouvons éviter cette discussion, je l'apprécierais.
la source
Le TSQL est complet parce que nous Turing pouvons faire un BrainFuck interprète TSQL.
Interpréteur BrainFuck en SQL - GitHub
Le code fourni fonctionne en mémoire et ne modifie pas une base de données.
la source
https://web.archive.org/web/20110807062050/http://channel9.msdn.com/forums/TechOff/431432-SQL-Turing-Completeness-question
Est une discussion de ce sujet. Une citation:
la source
À proprement parler, SQL est désormais un langage complet car le dernier standard SQL inclut les «modules stockés persistants» (PSM). En bref, un PSM est la version standard du langage PL / SQL dans Oracle (et d'autres extensions procédurales similaires du SGBD actuel).
Avec l'inclusion de ces PSM, SQL est devenu complet
la source
Une instruction de sélection ANSI, telle que définie à l'origine dans SQL-86, n'est pas complète car elle se termine toujours (sauf pour les CTE récursifs et uniquement si l'implémentation prend en charge une récursivité arbitraire profonde). Il n'est donc pas possible de simuler une autre machine de turing. Les procédures stockées sont terminées mais c'est de la triche ;-)
la source
Le PLSQL d'Oracle et le TSQL de Microsoft sont tous deux terminés. La déclaration de sélection d'Oracle elle-même est également terminée.
la source