2012-07-18 44 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; 

它工作在顶点。