2011-03-05 126 views
2

我得到的時候PLSQL錯誤無效號碼

procedure Afficher(opt int,id int) is 
type emp is record(fn employees.first_name%type, 
        lname employees.last_name%type, 
        job jobs.job_title%type, 
        dep departments.department_id%type); 
emp1 emp; 
begin 
select e1.first_name,e1.last_name,j.job_title,d.department_name into emp1 
from employees e1 ,jobs j,departments d where e1.employee_id= 'id' and 
e1.job_id=j.job_id and e1.department_id =d.department_id ; 

     dbms_output.put_line('Name  Job  Department'); 
     dbms_output.put_line(emp1.fn||''|| emp1.lname||'  ' 
      ||emp1.job||' '||emp1.dep); 

end Afficher; 

回答

4

您正在尋找e1.employee_id='id'無效數字錯誤;它實際上是一個字符串,還是一個數字?

3

你可能想:

procedure Afficher(opt int,id int) is 
type emp is record(fn employees.first_name%type, 
        lname employees.last_name%type, 
        job jobs.job_title%type, 
        dep departments.department_id%type); 
emp1 emp; 
begin 
select e1.first_name,e1.last_name,j.job_title,d.department_name into emp1 
from employees e1 ,jobs j,departments d where e1.employee_id= id and 
e1.job_id=j.job_id and e1.department_id =d.department_id ; 

     dbms_output.put_line('Name  Job  Department'); 
     dbms_output.put_line(emp1.fn||''|| emp1.lname||'  ' 
      ||emp1.job||' '||emp1.dep); 

end Afficher; 

即周圍沒有引號id變量。

將變量重命名爲* emp_id *或類似的東西可能會更好。