#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 Пожалуйста, задайте отдельный вопрос по этому поводу (после поиска на сайте похожих вопросов. Я бы предположил, что об этом спрашивали раньше).