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

APEX内からバックエンドサーバーにsqlplusセッションを起動して実行することについて話している場合、スクリプトは正常に見えます。ただし、この場合、変数を&numと&num1ではなく&1と&2に変更して、これを試してみます。

ただし、このコードブロックをAPEXで直接実行しようとしている場合、Sodvedは正しいので、最初に変数にそれぞれ:numと:num1のラベルを付けてから、呼び出し元のモジュールが変数をバインドする必要があります。それを実行することができます。

お役に立てれば。

于 2012-07-19T02:21:26.737 に答える
0

&置換は、PL/SQL 自体ではなく、sqlplus クライアントの機能です。したがって、質問は、使用しているこの「Oracle Apex」クライアントに固有のものです(申し訳ありませんが、聞いたことはありません)。私の理解では、他のいくつかの GUI クライアントも&置換をサポートしています。私は自分でsqlplusを使用しています。

&num有効な PL/SQL ではありません。ただし、デフォルトでは、sqlplus は、解析/実行のためにコードをサーバーに渡す前に、対応する値に置き換えます。実際にプログラムを開発している場合は、言語/フレームワークのバインド変数を調べる必要があります。申し訳ありませんが、適切な解決策がありません。これが役立つことを願っています。

于 2012-07-18T15:50:37.853 に答える