Ошибка 201 должен быть объявлен идентификатор выбора

#sql #forms #oracle #select

#sql #формы #Oracle #выберите

Вопрос:

Я пытаюсь создать форму входа в систему через конструктор форм Oracle, у меня есть таблица с именем TRAVEL_USER, которую я создал в SQLPlus.

Я создал кнопку и использую триггер ПРИ НАЖАТИИ КНОПКИ.

Для начала я использую этот код, чтобы просто подсчитать количество пользователей, зарегистрированных в системе:

 DECLARE
    TUsers NUMBER := 0;
BEGIN
    SELECT COUNT(*) FROM TRAVEL_USER;
END;
  

При компиляции я получаю следующую ошибку:
Ошибка 201: идентификатор ‘TRAVEL_USER’ должен быть объявлен.

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

Я подключаюсь к базе данных с полными правами администратора (используя системное имя пользователя).

Ответ №1:

Какому пользователю принадлежит таблица TRAVEL_USER? Если вы подключаетесь как пользовательская СИСТЕМА (плохая идея), вам, вероятно, потребуется полностью указать имя таблицы именем схемы, которой принадлежит таблица:

 SELECT COUNT(*) FROM owner.travel_user;
  

Либо это, либо создайте общедоступный синоним для таблицы:

 CREATE PUBLIC SYNONYM travel_user FOR owner.travel_user;
  

Вы не должны привыкать использовать учетные записи SYS или SYSTEM для прикладных целей. Они являются системными учетными записями и должны использоваться для системных целей.

Ответ №2:

(ЛУЧШИЙ СПОСОБ — ЭТО)

 DECLARE
SNAME NUMBER:=0;
BEGIN
SELECT COUNT(*) INTO SNAME FROM TRAVEL_USER;
:PCOUNT:=SNAME;
END;
  

Я ПРАКТИЧЕСКИ ИСПОЛЬЗОВАЛ ЭТО В ORACLE FORM BUILDER 10G, И ЭТО РАБОТАЕТ

СНАЧАЛА ВЫБЕРИТЕ COUNT ИЗ ТАБЛИЦЫ В ПЕРЕМЕННУЮ (SNAME), А ЗАТЕМ СОЗДАЙТЕ ЭЛЕМЕНТ ОТОБРАЖЕНИЯ ТИПА (PCOUNT), ЗАТЕМ ПРИСВОИТЕ ЗНАЧЕНИЕ SNAME PCOUNT

Я ИСПОЛЬЗУЮ ЭТОТ КОД В ТИГРЕ ПРИ НАЖАТИИ КНОПКИ, И ОН РАБОТАЕТ ПРАВИЛЬНО

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

1. kleopatra Caps Lock не влияет на результат, я использую oracle 10g, и, насколько мне известно, код caps lock работает нормально, я пробовал это

2. @nitin-sharma проблема не в машине, а в человеке: чтение текста только с заглавными буквами крайне раздражает, особенно если код не разделен четко. Мой downvote зависает, пока этот беспорядок не будет устранен