2015-02-23 50 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

如果您使用的是一些UI終端一樣的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;