关于fetch的一个小问题!!!

qilu_2008 2009-06-29 09:39:39
我写了 这样一个触发器

CREATE TRIGGER Update_ForPurchase
AFTER INSERT ON BooksNotes
FOR EACH ROW
BEGIN
DECLARE nisbn varchar(13);
CURSOR cur IS
SELECT Isbn INTO nisbn FROM TextBooks;
OPEN cur;
LOOP
FETCH cur INTO nisbn;
IF nisbn=:new.Isbn THEN
UPDATE ForPurchase SET Qty_for_purchase=Qty_for_purchase+:new.Qty_for_purchase;
END IF;
IF cur%NOTFOUND THEN
INSERT INTO ForPurchase VALUES(:new.Isbn,:new.Qty_for_purchase);
END IF;
END LOOP;
CLOSE cur;
END;

但是编译出错 不知道错在哪里 请大家帮忙看看 是语法的问题么???

7/4 PLS-00103: 出现符号 "FETCH"在需要下列之一时:
constant exception
<an identifier> <a double-quoted delimited-identifier> table
LONG_ double ref char time timestamp interval date binary
national character nchar

15/5 PLS-00103: 出现符号 "CLOSE"在需要下列之一时:
end not pragma final
instantiable order overriding static member constructor map
...全文
115 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qilu_2008 2009-06-29
  • 打赏
  • 举报
回复
解决了 真是声明变量位置的问题 谢谢大家喽 结贴!
lee24 2009-06-29
  • 打赏
  • 举报
回复

CREATE TRIGGER Update_ForPurchase
AFTER INSERT ON BooksNotes FOR EACH ROW
DECLARE nisbn varchar(13);
CURSOR cur IS
SELECT Isbn INTO nisbn FROM TextBooks;

BEGIN
OPEN cur;
LOOP
FETCH cur INTO nisbn;
IF nisbn=:new.Isbn THEN
UPDATE ForPurchase SET Qty_for_purchase=Qty_for_purchase+:new.Qty_for_purchase;
END IF;
IF cur%NOTFOUND THEN
INSERT INTO ForPurchase VALUES(:new.Isbn,:new.Qty_for_purchase);
END IF;
END LOOP;
CLOSE cur;
END;
阿三 2009-06-29
  • 打赏
  • 举报
回复
CREATE OR REPLACE TRIGGER Update_ForPurchase
AFTER INSERT ON BooksNotes
FOR EACH ROW
Declare
nisbn varchar(13);
CURSOR cur IS SELECT Isbn INTO nisbn FROM TextBooks;
BEGIN
OPEN cur;
LOOP
FETCH cur INTO nisbn;
IF nisbn=:new.Isbn THEN
UPDATE ForPurchase SET Qty_for_purchase=Qty_for_purchase+:new.Qty_for_purchase;
END IF;
IF cur%NOTFOUND THEN
INSERT INTO ForPurchase VALUES(:new.Isbn,:new.Qty_for_purchase);
END IF;
END LOOP;
CLOSE cur;
END;
welyngj 2009-06-29
  • 打赏
  • 举报
回复
要是楼主给一个create table的ddl语句,
还可以给你调试调试。
cab1225 2009-06-29
  • 打赏
  • 举报
回复
DECLARE nisbn varchar(13);
这个你放到BEGIN前面去试试!?

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧