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를 필요로 : 난 그냥 당신의 코드가 INTO;을 추가하는 시도 . 그리고 너는 실종되었다. select 문에서 – Aleksej

+0

@Aleksej가이를 시도했지만 문제가 해결되지 않았습니다. 요청은 여전히 ​​첫 번째 명령문에서 실패합니다. –

+2

어디에서 실행합니까? 첫 번째 세미콜론이 문 분리 기호로 간주되는 것 같습니다. 클라이언트 문제처럼 보입니다. [[그림과 같이] (http://stackoverflow.com/q/33617220/266304), 다른 클라이언트는 PL/SQL을 처리하지 못하거나이를 처리하도록 구성해야합니다. –

답변

1

답변보다 댓글이 많았지 만 댓글에는 너무 길었습니다. 블록 내에서

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.