проверка на нулевые строки в запросе выбора

#sql #c #oracle11g

#sql #c #oracle11g

Вопрос:

В моей программе C есть встроенный sql-запрос. Эта программа работает в Windows и запрашивает базу данных Oracle. Запрос аналогичен EXEC SQL SELECT … Мне нужно добавить сюда проверку, чтобы узнать, возвращает ли запрос нулевые строки.

В принципе, я хочу установить локальную проверку, чтобы знать, что мой запрос не вернул ни одной строки, и соответствующим образом обработать это условие.

Как я могу это добавить. Я знаю, что можно использовать оператор EXISTS. Но я не понимаю, как мне использовать это во встроенном sql.

Спасибо за любую помощь.

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

1. Покажите код C, который вы используете для записи результатов запроса.

Ответ №1:

Используйте структуру sqlca

 EXEC SQL include "sqlca.h"
#define NO_ROWS_FOUND (sqlca.sqlcode==1403)
EXEC SQL BEGIN DECLARE SECTION;
    int val=0;
    short ind=0;
EXEC SQL END DECLARE SECTION;

EXEC SQL 
    select value
    int :val :ind 
      from mytable where rownum=1;
if(NO_ROWS_FOUND)
   printf("No rows foundn");
  

Ответ №2:

Используйте SELECT COUNT(*) FROM ... и сравните результат с 0.