2016-09-23 5 views
1

定数を使用する必要があるクエリを実行する必要があります(その値を変更してクエリに使用された値に直接影響を与えることができます)。クエリで使用される定数の宣言

declare 
QTY_TRESHOLD CONSTANT NUMBER(10,0) := 1; 
begin 
    select * from FD111200_DBF where M_NB = QTY_TRESHOLD 
end; 

私は上記を実行しようとすると、私は最初の文に次のエラーを取得:私が間違って

An error occurred when executing the SQL command: 
declare 
QTY_TRESHOLD CONSTANT NUMBER(10,0) := 1 

ORA-06550: line 2, column 39: 
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following: 

    * & = - + ; </> at in is mod remainder not rem 
    <an exponent (**)> <> or != or ~= >= <= <> and or like like2 
    like4 likec between || multiset member submultiset [SQL State=65000, DB Errorcode=6550] 

Execution time: 0.01s 

1 statement(s) failed. 

何をしているのですか?オラクルのthe sampleを見ると、これは良い構文であるはずです。 誰でも私の理解を助けることができますか?

+1

ブロック内の選択は、INTOを必要とします。そして、あなたは欠けている。 select文で – Aleksej

+0

@Aleksejがそれを試みましたが、問題を修正していません。要求は最初のステートメントで失敗します。 –

+2

これはどこから実行していますか?最初のセミコロンがステートメントセパレータとして見えているようです。それはクライアントの問題のように見えます。 [[ここに示すように](http://stackoverflow.com/q/33617220/266304)、他のクライアントはPL/SQLを処理しないか、またはそれを処理するように構成する必要があります)。 –

答えて

1

コメントは回答よりも多く、コメントには長すぎます。 私はちょうどINTO;を追加し、あなたのコードを試してみました:

SQL> CREATE TABLE FD111200_DBF(M_NB NUMBER); 

Table created. 

SQL> insert into FD111200_DBF values (1); 

1 row created. 

SQL> declare 
    2  QTY_TRESHOLD CONSTANT NUMBER(10,0) := 1; 
    3  var number; 
    4 begin 
    5  select M_NB 
    6  into var 
    7  from FD111200_DBF where M_NB = QTY_TRESHOLD; 
    8  -- 
    9  dbms_output.put_line(var); 
10 end; 
11/
1 

PL/SQL procedure successfully completed. 
関連する問題