现在我有两张表:
卡表:
A的编号
B的编号
借出数量书表:
B的编号
可借出数量
1、卡表中记录每个卡包含的借书信息,
如:
1001, a书编号,1;
1001,b书编号,2;
1002,c书编号,22、书表记录了每种书的可借出的数量
如:
1001 a书:5;
1002 b书:6;
现在我要在oracle的后台作一存储过程:
当我删除卡表中某一卡号时,
自动将书表中的对应的可借出数量增加,
增加的数量为卡表记录中的借出数量。谁能详细的给出这个存储过程的SQL语句。

解决方案 »

  1.   

    我试着写了一下,编译时提醒带编译错误:
    错误如下:
    行号= 10 列号= 17 错误文本= PLS-00049: 错误的赋值变量 'OLD.A的编号'
    行号= 15 列号= 17 错误文本= PLS-00049: 错误的赋值变量 'OLD.A的编号'sql语句如下:
    DECLAREbno number(12);
    pxno number(12);
    BEGINSELECT B的编号
    INTO pxno
    FROM A
    WHERE A的编号 = :OLD.A的编号;SELECT 可借出数量
    INTO bno
    FROM A
    WHERE A的编号 = :OLD.A的编号;update B SET 可借出数量 = 可借出数量+bno
    where B的编号 = pxno;
    END;这个问题应该怎么修改?
      

  2.   

    我现在改了一下:
    DECLAREbno number(12);
    pxno number(12);
    BEGINSELECT B的编号
    INTO pxno
    FROM A
    WHERE A的编号 = :current.A的编号;SELECT 可借出数量
    INTO bno
    FROM A
    WHERE A的编号 = :current.A的编号;update B SET 可借出数量 = 可借出数量+bno
    where B的编号 = pxno;
    END;仍旧有错误:
    错误如下:
    行号= 7 列号= 1 错误文本= PL/SQL: SQL Statement ignored
    行号= 10 列号= 17 错误文本= PL/SQL: ORA-00904: "CURRENT"."A的编号": 无效的标识符
    行号= 12 列号= 1 错误文本= PL/SQL: SQL Statement ignored
    行号= 15 列号= 17 错误文本= PL/SQL: ORA-00904: "CURRENT"."A的编号": 无效的标识符
      

  3.   

    用触发器来实现
    CREATE TRIGGER TG
    AFTER DELETE 
    ON 卡表
    FOR REACH ROW
    BEGIN   UPDATE 书表 
       SET 可借出数量 = 可借出数量+:OLD.借出数量
       WHERE B的编号=:OLD.B的编号;END;