新手学习savepoint,请指教

[复制链接]
查看11 | 回复0 | 2006-11-28 12:15:00 | 显示全部楼层 |阅读模式
CREATE OR REPLACE PROCEDURE PKG_TEST (P_IN IN VARCHAR2)
AS
V_SQLERRM VARCHAR2(100);
V_LOGMVARCHAR2(100);
BEGIN
BEGIN
SAVEPOINT BEFORE_PROCESS;
PKG_GENERAL.P_LOGGING(TO_CHAR(SYSDATE,\\\'YYYYMMDDHH24MISS\\\'),\\\'P_IN\\\',\\\'T\\\',\\\'\\\',V_LOGM);
END;
IF P_IN=\\\'Y\\\' THEN
COMMIT;
ELSIF P_IN=\\\'N\\\' THEN
ROLLBACK TO BEFORE_PROCESS;
END IF;
EXCEPTION
WHEN OTHERS THEN
PKG_GENERAL.P_ERROR(\\\'P_IN\\\',\\\'\\\',\\\'T\\\',SQLCODE||\\\'>>\\\'||SQLERRM,\\\'\\\',\\\'\\\',\\\'\\\',V_SQLERRM);
END;
根据我对savepoint的理解,这个过程运行的结构应该是,输入‘Y’时,通过P_LOGGING向表中写入一条记录。输入为‘N’时则会回滚到savepoint处,不会对表产生任何影响。
但是运行起来都会向表插入,不知道是何原因?请那位大侠指点:)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行