2016-04-02 31 views
0

這是我的計劃:PL/SQL接受輸入的if else

SET VERIFY OFF 
SET FEED OFF 
SET SERVEROUTPUT ON 

PROMPT 'Vehicle Inventory Record' 
ACCEPT p_Options; 
ACCEPT myVariable PROMPT 'Input value: '; 

DECLARE 
    n_numb number := 1; 

BEGIN 

    IF '&p_Options' = 'YES' THEN   
    dbms_output.put_line('input YES'); 

    ELSIF '&p_Options' = 'NO' THEN  
    dbms_output.put_line('input NO'); 

    ELSE 
    dbms_output.put_line('&myVariable'); 

    END IF; 

END; 
/

現在,每當我運行程序,我對p_Options輸入值,但不管是什麼我進入,它要求我輸入MYVARIABLE。

我只想在p_Options既不是YES也不是NO的情況下輸入myVariable的值。

爲什麼它總是要求myVariable,即使它是在其他情況下?

回答

0

因爲替換變量(& ...)必須在解釋過程之前用實際值替換,「很久之前」會將其發送執行。

解釋器(與運行時相反)不評估「if」語句以查看它是否爲true或false;這將在運行時發生。

你想做什麼 - 有一個程序,提示用戶myVariable在執行期間,並且只有在需要時?你不能用替代變量來做到這一點。

+0

是的,我希望用戶只有在需要時才輸入myVariable。如何在沒有替代變量的情況下做到這一點 – user5155835

+0

它不能在PL/SQL中完成,即數據庫SERVER語言,它在執行期間不與最終用戶(客戶端)交互。對於你想要的東西,你將需要用Java或C#或你的組織中使用的任何東西構建一個前端應用程序。 – mathguy

+0

因此,接受用戶輸入是否有替代變量的替代方案?在這種情況下可以使用SET DEFINE OFF這樣的東西嗎? – user5155835