Nehmen wir an, wir haben diese Anfrage:DB2 Embedded SQL in RPGLE
SELECT T1.*, T2.* INTO :DS1, :DS2 FROM FILE1 AS T1
LEFT JOIN FILE2 AS T2 ON T1.KEY = T2.KEY
FETCH FIRST 1 ROW ONLY
Alles kommt in Ordnung, wenn beide Datensätze gefunden werden. Was passiert jedoch, wenn der Datensatz FILE2 nicht vorhanden ist?
SQLCOD -305 THE NULL VALUE CANNOT BE ASSIGNED TO OUTPUT HOST VARIABLE
Und selbst wenn der Datensatz von FILE1 gefunden wird, sind beide DS leer! Das ist ein Problem.
Ein Weg, dies zu überwinden, ist COALESCE
auf jedem Feld zu verwenden, aber was ist, wenn ich Hunderte von ihnen habe ?!
Eine andere Möglichkeit besteht darin, zwei verschiedene Abfragen zu verwenden. Aber das ist hässlich, wenn ich einen Cursor haben möchte.
Gibt es einen besseren Weg?
Wenn beide vorhanden sein müssen, ändern Sie Ihre LINKE VERBINDUNG mit INNER JOIN –
FILE2 Datensatz ist nicht erforderlich. Aber FILE1-Datensatz wird benötigt. – LppEdd