Проблема возврата нулевого значения - PullRequest
1 голос
/ 10 августа 2009

Я хотел проверить свою месячную заработную плату, в которой указана зарплата сотрудника, а также другие детали.

Я создал блок PL / SQL, но когда я помещаю свое условие для проверки существующего идентификатора сотрудника с другой таблицей, некоторые возвращают нулевое значение и, следовательно, моя таблица не идет дальше.

set serveroutput on 
declare
  emp_id NUMBER :=&emp;
  temp NUMBER;
begin
  select nvl(employee_id,10) into temp FROM bhavya_temp where bhavya_temp.employee_id=emp_id;

  dbms_output.put_line(temp);

  if temp is NULL
  then 
    dbms_output.put_line('employee ID does not exist');
  else 
    dbms_output.put_line('bye');
  end if;
end;

При вводе идентификатора сотрудника 1 или 2, которые существуют в таблице, получается

anonymous block completed
1
bye

Когда я ввожу 3 или более, которых там нет

Error report:
ORA-01403: no data found
ORA-06512: at line 6
01403. 00000 -  "no data found"
*Cause:    
*Action:

Заранее спасибо за помощь.

Ответы [ 3 ]

4 голосов
/ 10 августа 2009

Я никогда не писал PL / SQL, но очень похожая ошибка сообщается здесь .

Похоже, что вы можете решить проблему, поместив часть SELECT ... INTO внутри блока BEGIN ... EXCEPTION .. END.

Надеюсь, это поможет.

3 голосов
/ 10 августа 2009

Было бы полезно иметь операторы создания таблицы с некоторыми примерами данных, чтобы можно было воспроизвести проблему.

К вопросу: если строка с идентификатором не существует, вы получаете ORA-1403. Нет данных, нет NULL для преобразования. Оракул не мечтает ссориться за вас.

2 голосов
/ 10 августа 2009

Оберните выбранную позицию в блок исключения и поймайте исключение «данные не найдены» и действуйте соответственно

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