Sollte man da nicht beim Erstellen der
SQL-Statements direkt ansetzen? Wir bauen die uns immer als Stringfunktkion mithilfe einer Extra (auf einer TStringList basierenden) Klasse zusammen. Beispiel:
SQL-Code:
function SQL_Main:String;
var s:TSQL;
begin
s:=TSQL.Create;
s.Add:='Select';
s.Add:=' *';
s.Add:='From';
s.Add:=' ('+SQL_Subselect+')';
s.Add:='Where';
s.Add:=' myVarCharFeld=' + s.OracleString(IrgendeineStringVariable);
Result:=s.Text;
s.Free;
end;
function SQL_Subselect:String;
var s:TSQL;
begin
s:=TSQL.Create;
s.Add:='Select';
s.Add:=' T1.*, T2.MyFeld';
s.Add:='From';
s.Add:=' Tabelle1 T1';
s.Add:='Left Join';
s.Add:=' Tabelle2 T2';
s.Add:='On'
s.Add:=' T1.FID=T2.ID';
Result:=s.Text;
s.Free;
end;
Mmn kann man 100+ zeileige
SQL-Statements mit vielen Verschachttelungen eh kaum noch verstehen, auch wenn sie noch so gut formatiert sind. Da ist es leichter jede Verschachtelungsebene selber in der entsprechenden Unterfunktion prüfen zu können.