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 中运行该程序时,我收到以下错误消息

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
4

3 回答 3

0

&替换是 sqlplus 客户端的一个特性,而不是 PL/SQL 本身。因此,您的问题特定于您正在使用的“Oracle Apex”客户端(抱歉,从未听说过)。我的理解是其他一些 GUI 客户端也支持&替换。我只是自己使用 sqlplus。

&num不是有效的PL/SQL。但默认情况下,sqlplus 会在将代码传递给服务器进行解析/执行之前将其替换为相应的值。如果您实际上是在开发程序,那么您需要查看您的语言/框架的绑定变量。抱歉,我没有适合您的解决方案,希望对您有所帮助。

于 2012-07-18T15:50:37.853 回答
0

而不是写

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

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

它在顶点工作。

于 2014-08-25T05:50:23.287 回答
0

如果您正在谈论从 APEX 内启动 sqlplus 会话到后端服务器以执行,那么您的脚本看起来不错。但在这种情况下,我会将您的变量更改为 &1 和 &2 而不是 &num 和 &num1 并试一试。

但是,如果您尝试直接在 APEX 中执行此代码块,那么 Sodved 是正确的,您需要先分别将变量标记为 :num 和 :num1 ,然后调用模块必须在您之前将变量绑定到它可以执行。

希望这可以帮助。

于 2012-07-19T02:21:26.737 回答