我收到了PLSQL代码的错误消息:
expression 'V_EMPRECORD' is inappropriate as the left hand side of an assignment statement.
不知道哪里出错了。 我需要写一个PL / SQL代码块,它将执行以下操作:
1创建一个名为emp_cur的游标,它将读取emp_tbl中薪水大于70000的所有行。 2打开光标 3将信息提取到光标中 4显示Emplyees'细节到屏幕 5关闭光标
DECLARE
TYPE v_empRecord IS RECORD(
vFName emp_tbl.first_name%TYPE,
vLName emp_tbl.last_name%TYPE,
vSalary emp_tbl.salary%TYPE,
vDept emp_tbl.department%Type);
CURSOR c_empDetails IS
SELECT * FROM emp_tbl
WHERE salary > 70000;
BEGIN
OPEN c_empDetails;
FETCH c_empDetails INTO v_empRecord;
CLOSE c_empDetails;
END;
感谢任何帮助!
答案 0 :(得分:2)
您正在尝试直接获取某个类型。你需要定义一个v_empRecord类型的对象,然后获取它。
我认为你会更容易找到一个游标for循环。请参阅此处的CURSOR FOR LOOP示例:https://docs.oracle.com/cd/E18283_01/appdev.112/e17126/static.htm#CHDBJBJE
答案 1 :(得分:0)
只是为了扩展@Gary的答案,尽管我使用记录类型为INTO
的{{1}},但我遇到了同样的错误。这是由于下面提到的狡猾的错误造成的
我使用v_empRecord
旁边的RECORD名称,而不是使用该记录类型创建新变量
into
希望如果你犯了同样的错误,这个答案可能对你有所帮助。
答案 2 :(得分:0)
DECLARE
//define a record type
TYPE v_empRecord_type IS RECORD(
vFName emp_tbl.first_name%TYPE,
vLName emp_tbl.last_name%TYPE,
vSalary emp_tbl.salary%TYPE,
vDept emp_tbl.department%Type);
CURSOR c_empDetails IS
SELECT * FROM emp_tbl
WHERE salary > 70000;
//define a record object belongs to the record type you defined before
v_empRecord v_empRecord_type ;
BEGIN
OPEN c_empDetails;
FETCH c_empDetails INTO v_empRecord ;
CLOSE c_empDetails;
END;