永发信息网

Oracle数据库Merge Into 如何使用Sequence 而不“浪费”

答案:2  悬赏:10  手机版
解决时间 2021-03-09 13:54
Oracle数据库Merge Into 如何使用Sequence 而不“浪费”
最佳答案
2、测试前提:创建脚本。
从上面的结果,我们可以非常清晰的看到6和7那里去了?--浪费掉了。
4、解决。创建一个函数来获取相应的值。
create or replace function get_sequence_nextval(f_schema in varchar2, f_sequence_name in varchar2) return numberisv_nextval number;beginexecute immediate 'select ' || f_schema || '.'||f_sequence_name||'.nextval from dual' into v_nextval;
return v_nextval;exceptionwhen others then
raise_application_error(sqlcode,sqlerrm);end;
将3测试中的代码调整为:
test.seq_test.nextval ==
test.get_sequence_nextval('test','seq_test')
再次调用,我们可以看到三条记录11、12、13已经紧跟着10了。--不浪费了。IDNAMESEQ_VALUET_STAMP11one 2012-11-18 下午 03:28:352  22012-11-18 下午 03:11:4633 32012-11-15 下午 03:11:464 four42012-11-19 下午 03:11:4652two 2012-11-18 下午 03:28:356  82012-11-18 下午 03:11:4673 92012-11-15 下午 03:11:468 four102012-11-19 下午 03:11:469  112012-11-18 下午 03:11:46103 122012-11-15 下午 03:11:4611 four132012-11-19 下午 03:11:46
5、结论及分析:
使用Merge Into调用Sequence 类似于预编译,会直接将值赋组合相应的调用,而不管该matched 或 not matched是否成功执行。而使用一个function进行封闭以后,因为预编译时无法知道该值,所以不会进行预处理,因此也不会浪费sequence的值。但是,使用function来讲,会带来另外一个问题,性能因为无端的增加了一下调用。
所以,根据自己的实际情况,选择适合自己的才是最好的。
全部回答
期待看到有用的回答!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
莱卡m怎么样
陈木匠地址有知道的么?有点事想过去
我的电脑时间老是慢了1~3分钟是什么原因?
为什么我玩使命召唤4有时会卡?过一会儿又流
过年这几天,把车放到了收费露天停车场,安全
石油醚的作用是什么请问石油醚是做什么用的,
有哪些企业用变更长期股权投资核算方法操纵利
学心理学需要注意些什么?
有没有一种糖吃了以后全身会散发香味的?
猜字一个人站着张开一张大口双手指着双旁的圆
帝豪车怎么打拼音
本症证型A.肝肾亏虚型B.肝气郁结型C.胃阴不足
我想去福利院工作
赣州华士汽车贸易有限公司怎么去啊,有知道地
上海有营业执照怎么交社保
推荐资讯
200W的电源能带的起 七彩虹IGAME650吗?
兄弟们上里面的周秘书是谁扮演的
氧气计量上刻度在10cm处流量速度是多少l/分钟
北京哪儿有便宜小旅馆
Buon anno a tutti 意大利语是什么意思?
多元化汽车精致美容广场在什么地方啊,我要过
南京云融网钱贷款还钱,钱到期怎么没扣
cdr如何设置桌面图标?
小白菜酒家怎么去啊,有知道地址的么
导游口头语言表达技巧要注重()。
亿龙汽贸我想知道这个在什么地方
【岩韵】“岩韵”是指乌龙茶中的哪一茶种所具
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?