ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » Oracle新技术/11g » [高手请进]oracle 10g新限制?

标题: [高手请进]oracle 10g新限制?
离线 Array倚竹听雨
初级会员



精华贴数 0
个人空间 0
技术积分 52 (26937)
社区积分 0 (269002)
注册日期 2005-2-3
论坛徽章:0
      
      

发表于 2007-3-1 22:47 
[高手请进]oracle 10g新限制?

数据库中在执行UPDATE的时候的case when 语句,行数在128以上,在9i下它们执行完全正常,最近数据库升级到10g后发现一旦WHEN的行数超过128就不能执行,提示函数的参数过多,在网上查过相关资料,10g确实有这限制,不知道是否为可配置参数,9i里没限制的功能升级10g后竟然~~郁闷啊!!!不知道各位高手是否知道解决之道?否则我要去精减CASE WHEN,很多地方都有,相当麻烦!!!小弟拜谢了


只看该作者    顶部
离线 kickster
资深会员



精华贴数 0
个人空间 0
技术积分 1450 (1167)
社区积分 357 (1707)
注册日期 2007-2-28
论坛徽章:6
2008年新春纪念徽章生肖徽章2007版:鼠生肖徽章2007版:鸡   
      

发表于 2007-3-2 07:00 
给个link看一下,再把出错信息帖一下分享吧


__________________
Oracle EM 10g DB & Grid Control
Oracle 9i & 10g RAC
Oracle 9i & 10g DG
只看该作者    顶部
离线 ZALBB
正在看龙蛇演义


精华贴数 8
个人空间 0
技术积分 29314 (29)
社区积分 14412 (101)
注册日期 2001-10-15
论坛徽章:54
      
      

发表于 2007-3-2 11:00 
这个问题我没见过。

按我的理解,应该不会,基本上,低版本提供的功能,高版本会保留和扩展,
要不就取消,而不会缩小。

楼主检查仔细点,会不会是哪些地方的语法有问题。
可用sqlplus 里的edit 功能编辑测试。


只看该作者    顶部
离线 倚竹听雨
初级会员



精华贴数 0
个人空间 0
技术积分 52 (26937)
社区积分 0 (269002)
注册日期 2005-2-3
论坛徽章:0
      
      

发表于 2007-3-2 11:43 
很简单的UPDATE 语句,在里面嵌套了无数个CASE WHEN,我试过同样的语句在9i下运行正常,到10g的这边执行就报错,提示函数参数过多,我删除中间的一些行,低于128行,就能执行~~~


只看该作者    顶部
离线 ZALBB
正在看龙蛇演义


精华贴数 8
个人空间 0
技术积分 29314 (29)
社区积分 14412 (101)
注册日期 2001-10-15
论坛徽章:54
      
      

发表于 2007-3-2 16:26 
你把语句的结构列出来,我在我的环境下测试一下。


只看该作者    顶部
离线 supersea
资深会员


精华贴数 0
个人空间 0
技术积分 2332 (678)
社区积分 5 (14970)
注册日期 2001-11-24
论坛徽章:3
会员2006贡献徽章授权会员数据库板块每日发贴之星   
      

发表于 2007-3-3 15:39 
I met the exactly same issue before.
Finally, i have to use decode instead of case when.


只看该作者    顶部
离线 kickster
资深会员



精华贴数 0
个人空间 0
技术积分 1450 (1167)
社区积分 357 (1707)
注册日期 2007-2-28
论坛徽章:6
2008年新春纪念徽章生肖徽章2007版:鼠生肖徽章2007版:鸡   
      

发表于 2007-3-3 19:43 
Would you please provide a test scripts,Thanks an advance


__________________
Oracle EM 10g DB & Grid Control
Oracle 9i & 10g RAC
Oracle 9i & 10g DG
只看该作者    顶部
离线 bluemoon0083
大表哥


精华贴数 2
个人空间 0
技术积分 6844 (187)
社区积分 68 (4190)
注册日期 2005-12-29
论坛徽章:15
会员2007贡献徽章授权会员生肖徽章2007版:狗2008北京奥运纪念徽章:足球2008北京奥运纪念徽章:现代五项生肖徽章2007版:猪
生肖徽章2007版:牛生肖徽章2007版:鸡生肖徽章2007版:鼠生肖徽章2007版:猴ITPUB新首页上线纪念徽章生肖徽章:虎

发表于 2007-3-4 00:21 
还是改用decode吧,性能方面也可以做一下测试,应该是decode比case好


__________________
偶是新手,正在学习oracle db+apps+linux,如有说错的地方请批评指正!
只看该作者    顶部
离线 redhotkiss
该用户已被删除









发表于 2007-3-4 17:29  资料  个人空间  短消息  加为好友 
*** 作者被禁止或删除 内容自动屏蔽 ***
离线 倚竹听雨
初级会员



精华贴数 0
个人空间 0
技术积分 52 (26937)
社区积分 0 (269002)
注册日期 2005-2-3
论坛徽章:0
      
      

发表于 2007-3-5 11:57 
谢谢各位的关注,我已经修改SQL语句,将CASE WHEN 的写法改变了一下,能执行了!
现在抱着研究的态度跟各位讨论一下,我将SQL发出来分享一下,大家有兴趣可以在不同的环境测试一下,同样的语句,在9i下能执行,10g里执行就提示"ora-00939 函数的参数过多".直接删除中间的一些行再执行就能通过,我试过,低于128就OK.
create table SAT456("标准" NUMBER(19,4),"一级" VARCHAR2(1000),"二级" VARCHAR2(1000))

Update SAT456 set"标准"=Round(CASE WHEN "一级"='03' AND "二级"='01' THEN  7780
     WHEN "一级"='03' AND "二级"='02' THEN  7280
     WHEN "一级"='03' AND "二级"='03' THEN  6780
     WHEN "一级"='03' AND "二级"='04' THEN  6280
     WHEN "一级"='03' AND "二级"='05' THEN  5780
     WHEN "一级"='03' AND "二级"='06' THEN  5280
     WHEN "一级"='03' AND "二级"='07' THEN  4780
     WHEN "一级"='03' AND "二级"='08' THEN  4280
     WHEN "一级"='03' AND "二级"='09' THEN  3780
     WHEN "一级"='04' AND "二级"='01' THEN  5680
     WHEN "一级"='04' AND "二级"='02' THEN  5280
     WHEN "一级"='04' AND "二级"='03' THEN  4880
     WHEN "一级"='04' AND "二级"='04' THEN  4480
     WHEN "一级"='04' AND "二级"='05' THEN  4080
     WHEN "一级"='04' AND "二级"='06' THEN  3680
     WHEN "一级"='04' AND "二级"='07' THEN  3280
     WHEN "一级"='04' AND "二级"='08' THEN  2880
     WHEN "一级"='04' AND "二级"='09' THEN  2480
     WHEN "一级"='05' AND "二级"='01' THEN  3840
     WHEN "一级"='05' AND "二级"='02' THEN  3680
     WHEN "一级"='05' AND "二级"='03' THEN  3520
     WHEN "一级"='05' AND "二级"='04' THEN  3360
     WHEN "一级"='05' AND "二级"='05' THEN  3200
     WHEN "一级"='05' AND "二级"='06' THEN  3040
     WHEN "一级"='05' AND "二级"='07' THEN  2880
     WHEN "一级"='05' AND "二级"='08' THEN  2720
     WHEN "一级"='05' AND "二级"='09' THEN  2560
     WHEN "一级"='05' AND "二级"='10' THEN  2480
     WHEN "一级"='05' AND "二级"='11' THEN  2400
     WHEN "一级"='05' AND "二级"='12' THEN  2320
     WHEN "一级"='05' AND "二级"='13' THEN  2240
     WHEN "一级"='05' AND "二级"='14' THEN  2160
     WHEN "一级"='05' AND "二级"='15' THEN  2080
     WHEN "一级"='05' AND "二级"='16' THEN  2000
     WHEN "一级"='05' AND "二级"='17' THEN  1920
     WHEN "一级"='05' AND "二级"='18' THEN  1840
     WHEN "一级"='05' AND "二级"='19' THEN  1760
     WHEN "一级"='05' AND "二级"='20' THEN  1680
     WHEN "一级"='05' AND "二级"='21' THEN  1600
     WHEN "一级"='05' AND "二级"='22' THEN  1520
     WHEN "一级"='05' AND "二级"='23' THEN  1440
     WHEN "一级"='06' AND "二级"='01' THEN  3200
     WHEN "一级"='06' AND "二级"='02' THEN  3040
     WHEN "一级"='06' AND "二级"='03' THEN  2880
     WHEN "一级"='06' AND "二级"='04' THEN  2720
     WHEN "一级"='06' AND "二级"='05' THEN  2560
     WHEN "一级"='06' AND "二级"='06' THEN  2400
     WHEN "一级"='06' AND "二级"='07' THEN  2240
     WHEN "一级"='06' AND "二级"='08' THEN  2080
     WHEN "一级"='06' AND "二级"='09' THEN  1920
     WHEN "一级"='06' AND "二级"='10' THEN  1840
     WHEN "一级"='06' AND "二级"='11' THEN  1760
     WHEN "一级"='06' AND "二级"='12' THEN  1680
     WHEN "一级"='06' AND "二级"='13' THEN  1600
     WHEN "一级"='06' AND "二级"='14' THEN  1520
     WHEN "一级"='06' AND "二级"='15' THEN  1440
     WHEN "一级"='06' AND "二级"='16' THEN  1360
     WHEN "一级"='06' AND "二级"='17' THEN  1280
     WHEN "一级"='06' AND "二级"='18' THEN  1200
     WHEN "一级"='06' AND "二级"='19' THEN  1120
     WHEN "一级"='06' AND "二级"='20' THEN  1040
     WHEN "一级"='06' AND "二级"='21' THEN  960
     WHEN "一级"='06' AND "二级"='22' THEN  880
     WHEN "一级"='06' AND "二级"='23' THEN  800
     WHEN "一级"='07' AND "二级"='01' THEN  2560
     WHEN "一级"='07' AND "二级"='02' THEN  2400
     WHEN "一级"='07' AND "二级"='03' THEN  2240
     WHEN "一级"='07' AND "二级"='04' THEN  2080
     WHEN "一级"='07' AND "二级"='05' THEN  1920
     WHEN "一级"='07' AND "二级"='06' THEN  1760
     WHEN "一级"='07' AND "二级"='07' THEN  1600
     WHEN "一级"='07' AND "二级"='08' THEN  1440
     WHEN "一级"='07' AND "二级"='09' THEN  1280
     WHEN "一级"='07' AND "二级"='10' THEN  1240
     WHEN "一级"='07' AND "二级"='11' THEN  1200
     WHEN "一级"='07' AND "二级"='12' THEN  1160
     WHEN "一级"='07' AND "二级"='13' THEN  1120
     WHEN "一级"='07' AND "二级"='14' THEN  1080
     WHEN "一级"='07' AND "二级"='15' THEN  1040
     WHEN "一级"='07' AND "二级"='16' THEN  1000
     WHEN "一级"='07' AND "二级"='17' THEN  960
     WHEN "一级"='07' AND "二级"='18' THEN  920
     WHEN "一级"='07' AND "二级"='19' THEN  880
     WHEN "一级"='07' AND "二级"='20' THEN  840
     WHEN "一级"='07' AND "二级"='21' THEN  800
     WHEN "一级"='07' AND "二级"='22' THEN  760
     WHEN "一级"='07' AND "二级"='23' THEN  720
     WHEN "一级"='08' AND "二级"='01' THEN  1840
     WHEN "一级"='08' AND "二级"='02' THEN  1760
     WHEN "一级"='08' AND "二级"='03' THEN  1680
     WHEN "一级"='08' AND "二级"='04' THEN  1600
     WHEN "一级"='08' AND "二级"='05' THEN  1520
     WHEN "一级"='08' AND "二级"='06' THEN  1440
     WHEN "一级"='08' AND "二级"='07' THEN  1360
     WHEN "一级"='08' AND "二级"='08' THEN  1280
     WHEN "一级"='08' AND "二级"='09' THEN  1200
     WHEN "一级"='08' AND "二级"='10' THEN  1160
     WHEN "一级"='08' AND "二级"='11' THEN  1120
     WHEN "一级"='08' AND "二级"='12' THEN  1080
     WHEN "一级"='08' AND "二级"='13' THEN  1040
     WHEN "一级"='08' AND "二级"='14' THEN  1000
     WHEN "一级"='08' AND "二级"='15' THEN  960
     WHEN "一级"='08' AND "二级"='16' THEN  930
     WHEN "一级"='08' AND "二级"='17' THEN  900
     WHEN "一级"='08' AND "二级"='18' THEN  870
     WHEN "一级"='08' AND "二级"='19' THEN  840
     WHEN "一级"='08' AND "二级"='20' THEN  780
     WHEN "一级"='08' AND "二级"='21' THEN  720
     WHEN "一级"='08' AND "二级"='22' THEN  660
     WHEN "一级"='08' AND "二级"='23' THEN  600
     WHEN "一级"='09' AND "二级"='01' THEN  1520
     WHEN "一级"='09' AND "二级"='02' THEN  1440
     WHEN "一级"='09' AND "二级"='03' THEN  1360
     WHEN "一级"='09' AND "二级"='04' THEN  1280
     WHEN "一级"='09' AND "二级"='05' THEN  1200
     WHEN "一级"='09' AND "二级"='06' THEN  1120
     WHEN "一级"='09' AND "二级"='07' THEN  1040
     WHEN "一级"='09' AND "二级"='08' THEN  960
     WHEN "一级"='09' AND "二级"='09' THEN  880
     WHEN "一级"='09' AND "二级"='10' THEN  860
     WHEN "一级"='09' AND "二级"='11' THEN  840
     WHEN "一级"='09' AND "二级"='12' THEN  820
     WHEN "一级"='09' AND "二级"='13' THEN  800
     WHEN "一级"='09' AND "二级"='14' THEN  780
     WHEN "一级"='09' AND "二级"='15' THEN  770
     WHEN "一级"='09' AND "二级"='16' THEN  760
     WHEN "一级"='09' AND "二级"='17' THEN  750
     WHEN "一级"='09' AND "二级"='18' THEN  730
     WHEN "一级"='09' AND "二级"='19' THEN  700
     WHEN "一级"='09' AND "二级"='20' THEN  670
     WHEN "一级"='09' AND "二级"='21' THEN  640
     WHEN "一级"='09' AND "二级"='22' THEN  610
     WHEN "一级"='09' AND "二级"='23' THEN  580
     WHEN "一级"='10' AND "二级"='01' THEN  1200
     WHEN "一级"='10' AND "二级"='02' THEN  1120
     WHEN "一级"='10' AND "二级"='03' THEN  1040
     WHEN "一级"='10' AND "二级"='04' THEN  960
     WHEN "一级"='10' AND "二级"='05' THEN  880
     WHEN "一级"='10' AND "二级"='06' THEN  800
     WHEN "一级"='10' AND "二级"='07' THEN  720
     WHEN "一级"='10' AND "二级"='08' THEN  640
     WHEN "一级"='10' AND "二级"='09' THEN  560
     WHEN "一级"='10' AND "二级"='10' THEN  550
     WHEN "一级"='10' AND "二级"='11' THEN  540
     WHEN "一级"='10' AND "二级"='12' THEN  540
     WHEN "一级"='10' AND "二级"='13' THEN  540
     WHEN "一级"='10' AND "二级"='14' THEN  530
     WHEN "一级"='10' AND "二级"='15' THEN  530
     WHEN "一级"='10' AND "二级"='16' THEN  520
     WHEN "一级"='10' AND "二级"='17' THEN  520
     WHEN "一级"='10' AND "二级"='18' THEN  510
     WHEN "一级"='10' AND "二级"='19' THEN  500
     WHEN "一级"='10' AND "二级"='20' THEN  490
     WHEN "一级"='10' AND "二级"='21' THEN  480
     WHEN "一级"='10' AND "二级"='22' THEN  470
     WHEN "一级"='10' AND "二级"='23' THEN  460
     WHEN "一级"='11' AND "二级"='01' THEN  880
     WHEN "一级"='11' AND "二级"='02' THEN  830
     WHEN "一级"='11' AND "二级"='03' THEN  780
     WHEN "一级"='11' AND "二级"='04' THEN  730
     WHEN "一级"='11' AND "二级"='05' THEN  680
     WHEN "一级"='11' AND "二级"='06' THEN  630
     WHEN "一级"='11' AND "二级"='07' THEN  580
     WHEN "一级"='11' AND "二级"='08' THEN  530
     WHEN "一级"='11' AND "二级"='09' THEN  480
     WHEN "一级"='11' AND "二级"='10' THEN  480
     WHEN "一级"='11' AND "二级"='11' THEN  470
     WHEN "一级"='11' AND "二级"='12' THEN  470
     WHEN "一级"='11' AND "二级"='13' THEN  460
     WHEN "一级"='11' AND "二级"='14' THEN  460
     WHEN "一级"='11' AND "二级"='15' THEN  450
     WHEN "一级"='11' AND "二级"='16' THEN  450
     WHEN "一级"='11' AND "二级"='17' THEN  440
     WHEN "一级"='11' AND "二级"='18' THEN  430
     WHEN "一级"='11' AND "二级"='19' THEN  420
     WHEN "一级"='11' AND "二级"='20' THEN  410
     WHEN "一级"='11' AND "二级"='21' THEN  400
     WHEN "一级"='11' AND "二级"='22' THEN  400
     WHEN "一级"='11' AND "二级"='23' THEN  400
ELSE 0
END,8)


只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问