Ноль, не возвращающийся в DB2, когда запрос select не дает результата

#sql #ssis #db2

#sql #ssis #db2

Вопрос:

Я запускаю приведенный ниже запрос select в SSIS, который использует соединение DB2.

 SELECT 
    (SELECT COUNT(*) FROM tbl.Test) AS NoOfDest
FROM tbl.Index
FETCH FIRST 1 ROW ONLY;
  

Когда этот запрос не дает результата, я получаю приведенную ниже ошибку в SSIS.

указан набор результатов с одной строкой, но строки не были возвращены.

Итак, я пытаюсь вернуть 0 в DB2 вместо «пусто / без результата». Я пробовал следующее.

 SELECT 
    (COALESCE((SELECT COUNT(*) FROM tbl.Test), 0)) AS NoOfDest
FROM tbl.Index
FETCH FIRST 1 ROW ONLY;

SELECT 
    (NVL((SELECT COUNT(*) FROM tbl.Test), 0)) AS NoOfDest
FROM tbl.Index
FETCH FIRST 1 ROW ONLY;
  

Но все, что не возвращает результата.

Как я могу вернуть 0 в DB2?

Комментарии:

1. Просто SELECT COUNT(*) as NoOfDest FROM tbl.Test ?

Ответ №1:

Предположительно, он не возвращает результата, потому что tbl.Index . Попробуйте это:

 SELECT (SELECT COUNT(*) FROM tbl.Test) AS NoOfDest
FROM sysibm.sysdummy1;
  

Возникает вопрос, почему вы просто не выполняете:

 SELECT COUNT(*)  AS NoOfDest
FROM tbl.Test;