Запрос пользователя в PLSQL

#sql #plsql #oracle10g #sqlplus

#sql #plsql #oracle10g #sqlplus

Вопрос:

Мое задание — написать модуль PLSQL для вставки данных в базу данных. При определенных условиях может потребоваться дополнительная информация, и пользователю следует запросить еще одну деталь. Это должно быть сделано непосредственно в PLSQL, а формулировка взята прямо из назначения.

Я исследовал тему и обнаружил, что некоторые люди сказали, что это невозможно сделать в PLSQL? Но функция ПРИГЛАШЕНИЯ ПРИНЯТЬ существует.

 ACCEPT v_string PROMPT 'Enter your age: ';
  

Хотя это работает непосредственно из SQLPlus, в PLSQL это не работает, поскольку выдает мне эту ошибку:

 PLS-00103: Encountered the symbol "V_STRING" when expecting one of the following: := . ( @ % ;
  

Может кто-нибудь дать некоторое представление о том, как я должен запрашивать пользователя у PLSQL, только при выполнении определенного условия (условие проверяется, когда вы получаете что-то еще из БД). Чтобы уточнить, мне нужна помощь только в том, как принимать входные данные.

Спасибо за ваше время.

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

1. ACCEPT — это расширение SQL * plus, а не PL / SQL.

Ответ №1:

Существует уловка, которая позволит вам сделать что-то подобное, но (а) это своего рода взлом, (б) вам нужно авторизоваться на самом сервере базы данных, и (в) это работает только в Linux (и, возможно, в других версиях Unix).

Как правило, невозможно запросить ввод данных пользователем в PL / SQL, особенно если вы подключаетесь к базе данных на удаленном компьютере. Либо ваше назначение неверно, либо вы неправильно его поняли.

Программы PL / SQL предназначены для запуска на сервере базы данных, поэтому нет смысла запрашивать у пользователя ввод во время них. Используя ACCEPT команду, SQL * Plus может запрашивать у пользователя ввод во время выполнения скрипта на стороне клиента. Затем SQL * Plus заменит введенное значение перед отправкой SQL или PL / SQL в базу данных.

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

1. Профессор согласился и сказал, что вы должны просто передать его в качестве параметра в процедуру. Спасибо.

Ответ №2:

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

  • SQL* Plus: amp; Переменная
  • Разработчик SQL: Вы можете создать процедуру или использовать :Variable, чтобы получить запрос на вставку параметра

Ответ №3:

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

 declare
c1 varchar2(50);
begin
c1:='amp;enter_value';
dbms_output.put_line(c1);
exception
when others then
dbms_output.put_line(sqlerrm);
end;
  

‘amp;’ поможет вам запрашивать ввод у пользователя. Как только пользователь вводит некоторый ввод, он присваивается переменной, и вы можете использовать переменную везде, где захотите.

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

Ответ №4:

Вы не можете получить пользовательский ввод в чистом PL / SQL. Это серверный язык для выражения бизнес-логики / базы данных.

Использование «amp;» для получения входных данных является функцией «sqlplus», а не стратегией PL / SQL. Если это было «задание», то вам нужно сказать учителю, что это недопустимое задание — или, может быть, это был вопрос с подвохом!