Ich will in einer Stored Procedure - mit Execute Immediate - eine temporäre Tabelle anlegen mit Strings in diversen Join-Bedingungen. Theoretisch verstehe ich wie es geht, aber praktisch funktioniert es leider nicht.
Mein
SQL-Statement stelle ich in einer VARCHAR2 Variablen zusammen.
Vereinfacht sieht es folgendermaßen aus:
SQL-Code:
lSQL := 'CREATE GLOBAL TEMPORARY TABLE TempData AS ' ||
'SELECT t1.col1, t2.col2 ' ||
'FROM tabelle1 t1 JOIN tabelle2 t2 ON (t2.col3 = ''' || value || ''' AND t1.col4 = t2.col4);';
Ich muss den String verketten, da an der Stelle kein binden möglich ist, habe ich herausgefunden.
Das verblüffende für mich ist, dass im Resultat um den Wert value jeweils zwei einzelne Hochkomma stehen, also ''wertX'' statt 'wertX', obwohl ich gedacht habe, dass in PL/
SQL die einfachen Hochkomma verdoppelt werden müssen, um am Schluss ein Hochkomma stehen zu haben.
Weiß jemand wo ich meinen Denkfehler habe?
Vielen Dank schon mal für die Hilfe,
JoyAnn