2013-04-17 16 views
0

我是PL/SQL的新手,我遇到了這段代碼的輸出問題。我有一個包含僱員姓名,職務,工資,身份證,等等。我需要的是我的輸出顯示如下填充的員工表:輸出故障。精確提取錯誤小於返回的行嗎?

Employee Name:  Johnson 
Job:     Service Writer 
Total Pay:   $32,000 

我不斷收到錯誤準確獲取收益比更行要求

ACCEPT p_1 PROMPT 'Please enter the Employee ID:' 

DECLARE 
    v_eid  employee.employee_id%TYPE := &p_1; 
    v_name employee.employee_name%TYPE; 
    v_job  employee.job%TYPE; 
    v_pay  employee.salary%TYPE; 
BEGIN 
    SELECT employee_name, job, salary 
    INTO v_name, v_job, v_pay 
    FROM employee; 
    DBMS_OUTPUT.PUT_LINE('Employee Name: ' || v_name); 
    DBMS_OUTPUT.PUT_LINE('Job: ' || v_job); 
    DBMS_OUTPUT.PUT_LINE('Total Pay: ' || v_pay); 
END; 

我覺得我很接近?任何幫助將是偉大的!

回答

1

您的SELECT語句返回多個行,這意味着SELECT INTO語句將失敗,並顯示「確切獲取返回的行數多於請求的行數」錯誤。

嘗試添加一個WHERE子句,這將意味着SELECT語句只會返回一行。我被你的代碼的猜測,你想要做這樣的事情:

ACCEPT p_1 PROMPT 'Please enter the Employee ID:' 

DECLARE 
    v_eid  employee.employee_id%TYPE := &p_1; 
    v_name employee.employee_name%TYPE; 
    v_job  employee.job%TYPE; 
    v_pay  employee.salary%TYPE; 
BEGIN 
    SELECT employee_name, job, salary 
    INTO v_name, v_job, v_pay 
    FROM employee 
    WHERE employee_id = v_eid; 

    DBMS_OUTPUT.PUT_LINE('Employee Name: ' || v_name); 
    DBMS_OUTPUT.PUT_LINE('Job: ' || v_job); 
    DBMS_OUTPUT.PUT_LINE('Total Pay: ' || v_pay); 
END; 

退房http://www.techonthenet.com/oracle/errors/ora01422.php,瞭解有關錯誤的詳細信息。