Rolf B: Frei verfügbares SQL Element Lexikon (Rückgabetyp & Parametertyp) (de/en)

Beitrag lesen

Hallo MB,

da schmeißt Du aber jetzt gewaltig was durcheinander.

Bist Du darauf angewiesen, Datenbanken wie InterSystems oder Oracle zu unterstützen? Oder willst du das einfach?

Wenn Du es willst, dann überlege Dir gut, welche proprietären Features (also das, was nur diese konkrete DB kennt und kein SQL Standard ist) einer dieser Datenbanken Du anbieten willst. Ein SQL Generator bildet einen kleinsten gemeinsamen Nenner aller unterstützten Datenbanken ab. Du willst damit doch erreichen, dass Du den Application Code unverändert lassen kannst und nur den SQL Generator austauschen musst, um eine andere DB zu unterstützen. Und Du musst es ja auch testen können, d.h. du brauchst Installationen aller Datenbanken die Du unterstützen willst. Nur mit dem Handbuch zu programmieren, ohne konkrete Läufe auf einer Maschine, ist mutig.

Bei Intersystems hast Du keine Typen gefunden, sondern Operatoren. Ich habe mir jetzt nur %INLIST angeschaut, damit geht laut dieser Seite etwas, was andere SQLs nur aus ihren feuchten Träumen kennen: spaltexy %INLIST ?. Zumindest MS SQL Server kennt keine Werteliste, die man per Parameter-Marker für eine Abfrage "ist der Wert in dieser Liste enthalten" angeben kann. In MySQL 8 scheint da mit MEMBER_OF etwas gekommen zu sein. Jedenfalls ist das etwas, das hoch proprietär ist und was dein Generator bei DBs, die das nicht kennen, irgendwie nachbauen müsste.

Bei Oracle hast Du keine Wertetypen gefunden, sondern eine Unterteilung von Expressions. Welchen (Werte-)Typ die haben, hängt davon ab worauf man sie anwendet. Steht ja auch drüber: General expressions are expressions that might result in a value of any type. Eine Column Reference ist ein Ausdruck, der eine Spalte bezeichnet. name ist eine Column Reference, bestehend aus einem Spaltennamen. foo.name ist eine Column Reference, bestehend aus einem Table- und einem Spaltennamen.

Bei Oracle steht zwar "Expression Type" drüber, aber das meint keine Datentypen. Sprache ist oft genug mehrdeutig.

Was Du bei Microsoft gefunden hast, hat mit SQL überhaupt nichts zu tun, da geht es um SSRS (SQL Server Reporting Services), die eine eigene Syntax haben.

Was Du bei techrepublic gefunden haben willst, weiß ich nicht. Das sieht mir wie ein normales Tutorial für Subselects aus.

Rolf

--
sumpsi - posui - clusi