2012-07-18 32 views
0
set serverout on 
declare 
first_num number(8):=# 
second_num number(8):=&num1; 
result number(8); 
begin 
result:=(first_num/second_num+second_num); 
dbms_output.put_line('the resultant value is:'||result); 
end; 

我想通過在運行時的變量,而我運行此程序中的Oracle APEX 4.1我得到了以下錯誤消息如何通過運行時間變量在PLSQL

ORA-06550: line 2, column 22: 
PLS-00103: Encountered the symbol "&" when expecting one of the following: 
(- + case mod new not null continue avg count current exists max min prior sql stddev 
    sum variance execute forall merge time timestamp interval 
date 
pile 

回答

0

&替代是sqlplus客戶端的一個特性,而不是PL/SQL本身。所以你的問題是特定於你正在使用的這個「Oracle Apex」客戶端(從未聽說過它很抱歉)。我的理解是其他一些GUI客戶端也支持&替代。我只是自己使用sqlplus。

&num是無效的PL/SQL。但默認情況下,在將代碼傳遞給服務器進行解析/執行之前,sqlplus會將其替換爲相應的值。如果你正在開發程序,那麼你需要查看你的語言/框架的綁定變量。抱歉,我沒有適合您的解決方案,希望這有助於您。

0

如果你正在談論從APEX內部啓動一個sqlplus會話到後端服務器來執行,那麼你的腳本看起來很好。但我會在這種情況下將您的變量更改爲& 1和& 2而不是& num和& num1,並試試這個。

但是,如果您試圖在APEX中直接執行這段代碼,那麼Sodved是正確的,您需要首先將變量標記爲:num和num1,然後調用模塊必須綁定變量在它可以執行之前執行它。

希望這有助於。

0

而是寫

first_num number(8):=# 
second_num number(8):=&num1; 

first_num number(8):=:num; 
second_num number(8):=:num1; 

它工作在頂點。