#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 зависает, пока этот беспорядок не будет устранен