Давайте предположим, что у нас есть этот запрос:DB2 встроенный SQL в 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
Все идет вверх хорошо, если обе записи найдены. Но что произойдет, если нет записи FILE2?
SQLCOD -305 THE NULL VALUE CANNOT BE ASSIGNED TO OUTPUT HOST VARIABLE
И даже если запись из FILE1 найдена, оба DS пустые! Это проблема.
Способом преодоления этого является использование COALESCE
на каждом поле, но что, если у меня есть сотни?
Другой способ - использовать два разных запроса. Но это некрасиво, если мне нужен курсор.
Есть ли лучший способ?
Если либо присутствует, замените свой ЛЕВЫЙ ПРИСОЕДИНЯЙТЕ С ВНУТРЕННЕГО СОЕДИНЕНИЯ –
Запись FILE2 не требуется. Но запись FILE1 необходима. – LppEdd