2012-01-14 54 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