2017-03-07 6 views
-2

error screenshot Toad에서 아래 프로그램을 실행하려고합니다.'&'의 프로 시저 오류

create or replace procedure tst_excp as 
    var_sal number; 
    var_empid number; 
    var_excp exception; 
begin 
    select sal into var_sal from emp 
    where empno = &var_empid; 

    if var_sal < 4500 then 
     raise var_excp; 
    end if; 
exception 
    when var_excp then 
     dbms_output.put_line ('The salary is low'); 
end; 

나는 라인에서 오류가 점점 오전 : where empno = &var_empid;

오류 메시지는 다음과 같습니다 나는 그것을 실행하는 동안 변수에 값을 전달할 계획입니다

PL/SQL: ORA-00936: missing expression 

.

답변

1

&은 sqlplus (및 TOAD, SQL Developer 및 PL/SQL Developer) 런타임 변수의 일부입니다. 코드에서 대체 할 입력에 대한 실행을 묻는 메시지가 표시됩니다 (프로 시저를 컴파일하는 동안 자신의 경우). 당신이이 과정에 대한 입력을받을 원하는, 그래서 모든 실행에 WHERE 절에 추가 될 경우

, 당신은 입력 변수로받을 필요 :

create or replace procedure tst_excp (var_empid in number) as -- << changed here 
var_sal number; 
var_empid number; 
var_excp exception; 
begin 
    select sal into var_sal from emp 
    where empno = var_empid; -- << changed here too 

     if var_sal < 4500 then 
     raise var_excp; 
    end if; 
    exception 
    when var_excp then 
    dbms_output.put_line ('The salary is low'); 
end; 
+0

가 대단히 소할 감사드립니다. 그것은 나를 위해 일했습니다 :-) 지금은 중복 된 항목이므로 var_empid (3 행)에 대해 설명해야했습니다. – aks