免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7028 | 回复: 15

Oracle 中插入数据自动消失问题 [复制链接]

论坛徽章:
0
发表于 2008-12-05 14:43 |显示全部楼层
我在使用oracle时,发现出现了问题,当数据插入一张普通表并提交后,没有报错,但是查询后发现数据并没有插入对应的表。
不知道是什么问题,环境变量设置?还是表的某个属性设置?

论坛徽章:
0
发表于 2008-12-05 14:46 |显示全部楼层

请各位高手指点

请各位高手指点

论坛徽章:
11
金牛座
日期:2015-03-19 16:56:22数据库技术版块每日发帖之星
日期:2016-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-04-13 06:20:00IT运维版块每日发帖之星
日期:2016-04-13 06:20:00数据库技术版块每日发帖之星
日期:2016-02-03 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00季节之章:春
日期:2015-03-27 15:54:57羊年新春福章
日期:2015-03-27 15:54:37戌狗
日期:2015-03-19 16:56:41数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
发表于 2008-12-05 15:05 |显示全部楼层
commit了没?~?

论坛徽章:
0
发表于 2008-12-05 15:15 |显示全部楼层
commit了

论坛徽章:
0
发表于 2008-12-05 15:20 |显示全部楼层
把你的试验过程贴出来看看,并看看该表是否有触发器之类的。

论坛徽章:
0
发表于 2008-12-05 15:21 |显示全部楼层
你使用什么工具插入的? 是不是pl/sql develop?  还是纯sqlplus命令窗口?

论坛徽章:
0
发表于 2008-12-05 15:31 |显示全部楼层
用工具插入的数据,就是pl/sql develop,但是我是发现用程序出错之后用工具试的,程序是是用.net写的

论坛徽章:
0
发表于 2008-12-05 15:36 |显示全部楼层
--测试代码
DECLARE
  lockerId NUMBER;
BEGIN
    get_app_count('APP_LOCKER', 1, lockerId);
    INSERT INTO APP_LOCKER
      (LOCK_ID, LOCK_TIME, LOCK_PERSON_ID, EXPIRE_TIME, BUSINESS_KEY1, BUSINESS_KEY2, BUSINESS_KEY3, BUSINESS_KEY4, BUSINESS_KEY5,BUSINESS_CATEGORY, BUSINESS_TYPE)
      VALUES
      (lockerId, SYSDATE, '1234567', 300, '1201', null, null, null, null, 1, 1101);      
   
    COMMIT;
END;

注:
1、存储过程get_app_count执行是正常的,计数器正常的增加,但是insert语句执行没有把数据插入表中。
2、我用的oracle版本是10.2.0.1

--存储过程get_app_count(由于生产环境不能使用的复制工具不能复制序列,自己写了一个计数器)
CREATE OR REPLACE PROCEDURE get_app_count (key VARCHAR2, num NUMBER, retStartValue OUT NUMBER) AS
  exLessThanZero EXCEPTION;
BEGIN
  IF num < 0 THEN
    RAISE exLessThanZero;
  ELSE
    UPDATE APP_COUNT SET COUNTER = COUNTER + num WHERE COUNTER_KEY = key;

    IF SQL%FOUND THEN
      SELECT COUNTER - num + 1 INTO retStartValue FROM APP_COUNT WHERE COUNTER_KEY = key;
    ELSE
      INSERT INTO APP_COUNT (COUNTER_KEY, COUNTER) VALUES (key, num);
      retStartValue := 1;
    END IF;

    COMMIT;
  END IF;
EXCEPTION
  WHEN exLessThanZero THEN
    retStartValue := 0;
  WHEN OTHERS THEN
    retStartValue := 0;
    ROLLBACK;
END;

论坛徽章:
0
发表于 2008-12-05 15:39 |显示全部楼层
另外没有用到触发器

论坛徽章:
0
发表于 2008-12-05 16:11 |显示全部楼层
做一个10046看看跟踪看看吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP