dbms_output не может напечатать логическое значение?

#sql #oracle #boolean #database-cursor #dbms-output

#sql #Oracle #логическое #база данных-курсор #dbms-output

Вопрос:

Я изучаю курсоры и не могу напечатать логическое значение в

 dbms_output.put_line();
  

Код является

 DECLARE
CURSOR c_employees_3i is
SELECT * FROM employees_3i;
row_count BOOLEAN;
BEGIN
OPEN c_employees_3i;
row_count := c_employees_3i%isopen; 
Dbms_Output.put_line(bool_to_text(row_count));
CLOSE c_employees_3i;
END;
  

Я получаю эту ошибку

 ORA-06550: line 8, column 22:
PLS-00201: identifier 'BOOL_TO_TEXT' must be declared
ORA-06550: line 8, column 1:
PL/SQL: Statement ignored
  

Пожалуйста, помогите мне исправить ошибку. Спасибо

Ответ №1:

Функция bool_to_text не существует (и AFAIK, у Oracle никогда не было такой функции).

Вы можете использовать diutil.bool_to_int для преобразования логического значения в целое число и распечатать это:

 begin
  dbms_output.put_line(sys.diutil.bool_to_int(true));
end;
  

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

1. также, когда я пытаюсь использовать количество строк. Он всегда возвращает 0, даже если в таблице есть значения. ОБЪЯВЛЯЕМ КУРСОР c_employees_3i ВЫБРАННЫМ * ИЗ employees_3i; номер row_count; НАЧИНАЕМ ОТКРЫВАТЬ c_employees_3i; row_count:= c_employees_3i%rowcount; Dbms_Output.put_line(row_count); ЗАКРЫВАЕМ c_employees_3i; ЗАКАНЧИВАЕМ;

2. @ShreeNaath Пожалуйста, задайте отдельный вопрос по этому поводу (после поиска на сайте похожих вопросов. Я бы предположил, что об этом спрашивали раньше).