2015-02-23 6 views
0

Я создаю процедуру, которая потребует ввода данных от пользователя для печати нескольких деталей. Но когда я использую &, чтобы получить значения, они терпят неудачу с ошибками. логика выглядит следующим образом ..Получить входной сигнал от пользователя в процедуре PL/SQL

DBMS_OUTPUT.PUT_LINE('Enter Y to display Unauthorized records OR N to skip the display'); 
--SELECT &1 INTO lv_choice FROM DUAL; 
IF NOT ('&lv_choice'='Y') THEN 
DBMS_OUTPUT.PUT_LINE ('RECORDS WILL NOT BE DISPLAYED'); 
ELSE 
DBMS_OUTPUT.PUT_LINE ('RECORDS TO BE DISPLAYED ARE:'); 
...... 

Я попытался с помощью & 1 в двойной или прямом вызов & lv_choice который неисправный с PLSQL внутренних ошибками.

Любые методы получения ввода от пользователя для продолжения процедуры?

ответ

0

Если вы используете какой-то пользовательский интерфейс терминала, как SQLDeveloper или ЖАБА, вы можете достичь его, используя код ниже:

CREATE OR REPLACE INPUTPROCEDURE (LV_CHOICE IN VARCHAR2) 

AS 
BEGIN 

DBMS_OUTPUT.PUT_LINE('Enter Y to display Unauthorized records OR N to skip the display'); 
--SELECT &1 INTO lv_choice FROM DUAL; 
IF lv_choice <> 'Y' THEN 
DBMS_OUTPUT.PUT_LINE ('RECORDS WILL NOT BE DISPLAYED'); 
ELSE 
DBMS_OUTPUT.PUT_LINE ('RECORDS TO BE DISPLAYED ARE:'); 

END INPUTPROCEDURE; 

И Призовите выше процедура, как показано ниже:

DECLARE 
dyn_stmt VARCHAR2(200); 
b  BOOLEAN := TRUE; 
BEGIN 
dyn_stmt := 'BEGIN INPUTPROCEDURE(:LV_CHOICE); END;'; 
EXECUTE IMMEDIATE dyn_stmt USING b; 
END; 
1

Это невозможно в PL/SQL. PL/SQL не имеет доступа к терминалу (если вы не сделаете что-то like plug in Java или не вызовите свою программу из something like SQL*Plus(in which you can use commands like ACCEPT/PROMPT, прежде чем запускать процедуру).

В & переменные подстановки переменных и являются специфическими для SQL * Plus, а не PL/SQL

Смежные вопросы