Sql 循环错误游标
我正在尝试编写将插入到表中的游标,但收到错误,需要帮助。我收到的错误是ORA-06550Sql 循环错误游标,sql,oracle,plsql,Sql,Oracle,Plsql,我正在尝试编写将插入到表中的游标,但收到错误,需要帮助。我收到的错误是ORA-06550 DECLARE CURSOR cur_rating IS SELECT bc.name, bc.title, bc.checkoutdate, bc.returneddate, b.categoryname,b.publisher, ba.authorname FROM bookshelf_checko
DECLARE
CURSOR cur_rating IS
SELECT bc.name, bc.title, bc.checkoutdate, bc.returneddate,
b.categoryname,b.publisher, ba.authorname
FROM bookshelf_checkout bc INNER JOIN bookshelf b
ON bc.title = b.title
INNER JOIN bookshelf_author ba
ON bc.title = ba.title
FOR UPDATE NOWAIT;
lv_totdays_num NUMBER(4) := 0;
lv_rating_txt VARCHAR2(2);
BEGIN
FOR rec_rating IN cur_rating LOOP
lv_totdays_num := rec_rating.returneddate -
rec_rating.checkoutdate;
IF lv_totdays_num <= 10 THEN lv_rating_txt := 'DR';
ELSIF lv_totdays_num <= 25 THEN lv_rating_txt := 'CR';
ELSIF lv_totdays_num <= 35 THEN lv_rating_txt := 'BR';
ELSE lv_rating_txt := 'A';
END IF;
INSERT INTO bookshelf_audit (title, publisher, categoryname,
new_rating, auditdate)
VALUES (rec_rating.title, rec_rating.publisher,
rec_rating.categoryname, lv_rating_txt, sysdate)
WHERE CURRENT OF cur_rating;
END LOOP;
COMMIT;
END;
UPDATE或DELETE语句中的WHERE CURRENT OF子句说明应从表中获取的最新行应更新或删除:
UPDATE table_name
SET set_clause
WHERE CURRENT OF cursor_name;
或
但不适用于INSERT语句。
所以,移除电流额定值部分的电流,代码将运行。这就是将INSERT语句设置为:
INSERT INTO bookshelf_audit (title, publisher, categoryname,
new_rating, auditdate)
VALUES (rec_rating.title, rec_rating.publisher,
rec_rating.categoryname, lv_rating_txt, sysdate);
UPDATE或DELETE语句中的WHERE CURRENT OF子句说明应从表中获取的最新行应更新或删除:
UPDATE table_name
SET set_clause
WHERE CURRENT OF cursor_name;
或
但不适用于INSERT语句。
所以,移除电流额定值部分的电流,代码将运行。这就是将INSERT语句设置为:
INSERT INTO bookshelf_audit (title, publisher, categoryname,
new_rating, auditdate)
VALUES (rec_rating.title, rec_rating.publisher,
rec_rating.categoryname, lv_rating_txt, sysdate);
您需要从insert中删除where子句。。。价值观声明:
INSERT INTO bookshelf_audit
(title, publisher, categoryname,
new_rating, auditdate)
VALUES
(rec_rating.title, rec_rating.publisher,
rec_rating.categoryname, lv_rating_txt, sysdate)
WHERE CURRENT OF cur_rating;
应该是
INSERT INTO bookshelf_audit
(title, publisher, categoryname,
new_rating, auditdate)
VALUES
(rec_rating.title, rec_rating.publisher,
rec_rating.categoryname, lv_rating_txt, sysdate);
您需要从insert中删除where子句。。。价值观声明:
INSERT INTO bookshelf_audit
(title, publisher, categoryname,
new_rating, auditdate)
VALUES
(rec_rating.title, rec_rating.publisher,
rec_rating.categoryname, lv_rating_txt, sysdate)
WHERE CURRENT OF cur_rating;
应该是
INSERT INTO bookshelf_audit
(title, publisher, categoryname,
new_rating, auditdate)
VALUES
(rec_rating.title, rec_rating.publisher,
rec_rating.categoryname, lv_rating_txt, sysdate);
请粘贴整个错误消息:ORA-06550行号?柱INSERT子句中缺少分号请粘贴整个错误消息:ORA-06550行号?柱INSERT子句中缺少分号,非常好,谢谢@William Robertson!非常好用,谢谢@William Robertson!谢谢@Barbaros Ozhan!谢谢@Barbaros Ozhan!