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中运行此程序时出现以下错误消息
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 :(得分:0)
&
替换是sqlplus客户端的一个功能,而不是PL / SQL本身。所以你的问题是特定于你正在使用的这个“Oracle Apex”客户端(从未听说过对不起)。我的理解是其他一些GUI客户端也支持&
替换。我自己只使用sqlplus。
&num
无效PL / SQL。但默认情况下,在将代码传递给服务器进行解析/执行之前,sqlplus会将其替换为相应的值。如果您实际上正在开发程序,那么您需要查看语言/框架的绑定变量。对不起,我没有适合您的解决方案,希望这有帮助。
答案 1 :(得分:0)
如果您正在讨论从APEX内部启动sqlplus会话到后端服务器以执行,那么您的脚本看起来很好。但在这种情况下,我会将您的变量更改为& 1和& 2而不是& num和& num1,并尝试一下。
但是如果你试图直接在APEX中执行这段代码,那么Sodved是正确的,你需要首先将你的变量标记为:num和:num1然后调用模块必须将变量绑定到它才能执行它。
希望这会有所帮助。
答案 2 :(得分:0)
而不是写
first_num number(8):=#
second_num number(8):=&num1;
写
first_num number(8):=:num;
second_num number(8):=:num1;
它在顶点工作。