2012-01-14 56 views
0

試圖在遊標中使用帶有遊標的記錄以及隨後的表索引。如何使用FOR光標循環訪問記錄中的連接列

DECLARE CURSOR emp_cur IS 
    SELECT employee_id, first_name||' '|| last_name "name" 
    FROM employees 
    ORDER BY salary desc; 

emp_rec emp_cur%ROWTYPE; 

BEGIN 
    FOR emp_rec IN emp_cur 
    LOOP 
     DBMS_OUTPUT.PUT_LINE('Employee ID:'||emp_rec.employee_id||CHR(10)|| 
          'Employee Name:'||emp_rec.name); 
     EXIT WHEN emp_cur%ROWCOUNT = 10; 
    END LOOP; 
END; 

當我運行上面的代碼,我得到

ERROR at line 13, "NAME" must be declared. 

我怎樣才能訪問列FIRST_NAME ||」 '|| last_name在For循環中?或者我只需要做傳統的OPEN,簡單的循環,FETCH並關閉?

+0

我相信我不必在DECLARE部分中聲明emp_rec,因爲FOR循環會自動執行該操作問題依然如此。 – MStp 2012-01-14 21:23:13

回答

4

你非常接近;問題在於而不是用雙引號標識符轉換爲大寫,而的標識符用雙引號做而不是。所以name,NAME"NAME"相互等價,並且它們全都與"name"不同。要麼改變這一點:

first_name||' '|| last_name "name" 

這樣:

first_name||' '|| last_name name 

否則,如果你願意,更改此:

'Employee Name:'||emp_rec.name 

這樣:

'Employee Name:'||emp_rec."name" 
+0

幹得好!去的方法:) – MStp 2012-01-14 21:45:30