Как проверить нулевое условие на столбце курсора plsql? - PullRequest
0 голосов
/ 08 мая 2018

Я создаю курсор на запрос, получая все столбцы из таблицы.в цикле я использую каждый столбец и распечатываю его.Я хотел узнать любой простой способ проверить, имеет ли столбец какое-либо значение или нет.если столбец в строке является нулевым, поставьте «NULL».Я знаю, что могу использовать условие if для проверки каждого столбца в строке курсора в цикле for.но у меня есть много столбцов, так есть ли простой способ сделать это?

1 Ответ

0 голосов
/ 09 мая 2018

Вместо того, чтобы обрабатывать это требование в PL / SQL, вы должны рассмотреть возможность сделать это в самом курсоре. В общем, чем больше вы можете сделать в своем SQL, тем лучше (оптимизатор будет обрабатывать производительность). Использование большого количества логики PL / SQL, особенно ненужного, если условия / else в цикле принесут пользу вам, если вы обрабатываете много данных.

В вашем курсоре вы можете просто:

CURSOR c1 IS
SELECT NVL(column, 'NULL')
FROM   dual;

Существует множество встроенных функций SQL, которые справятся с этим за вас. Выше я использовал NVL, но вы можете использовать COALESCE, CASE и т. Д.

Пример CASE (примечание - если столбец не является типом данных VARCHAR, вам потребуется применить преобразование типов данных, чтобы избежать ошибок):

CURSOR c1 IS
SELECT (CASE 
           WHEN column IS NULL THEN
             'NULL'
           ELSE
             column
        END)
FROM   dual;

Пример COALESCE:

CURSOR c1 IS
SELECT COALESCE(column, 'NULL')
FROM   dual;  

Стоит отметить, что NVL - это двоичная функция, то есть может быть протестирован только один столбец / значение, однако COALESCE может тестировать несколько столбцов / значений одновременно, как показано ниже:

SELECT COALESCE (столбец1, столбец2, столбец3, «NULL») FROM YOUR_TABLE;

В случае если значение column1 равно NULL, а column2 НЕ равно NULL, будет возвращено значение column2.

Если значения column1 и column2 равны NULL, будет возвращено значение column3.

Если column1, column2, column3 имеют значение NULL, возвращается значение NULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...