楼主: azqf

TYPE RANGE OF是否有容量限制?

[复制链接]
论坛徽章:
27
会员2007贡献徽章
日期:2007-09-26 18:42:102010广州亚运会纪念徽章:体育舞蹈
日期:2011-05-11 09:57:072010广州亚运会纪念徽章:棋类
日期:2011-05-13 16:29:13蜘蛛蛋
日期:2011-06-30 17:53:11紫蛋头
日期:2011-07-12 11:19:41复活蛋
日期:2011-07-21 22:31:43蜘蛛蛋
日期:2011-09-08 09:59:19ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15蛋疼蛋
日期:2011-11-15 22:29:342011新春纪念徽章
日期:2011-04-21 11:29:39
11#
 楼主| 发表于 2008-7-29 17:56 | 只看该作者
我这只有八千就OVER了,所以感觉限制是对字符串长度限制,而不是对容量限制

使用道具 举报

回复
论坛徽章:
1
生肖徽章2007版:猴
日期:2009-03-10 21:29:55
12#
发表于 2008-7-30 10:17 | 只看该作者
看range和select condition的F1 help,没说会有exception的啊。楼主看看是不是sign和option的赋值不对?

使用道具 举报

回复
论坛徽章:
27
会员2007贡献徽章
日期:2007-09-26 18:42:102010广州亚运会纪念徽章:体育舞蹈
日期:2011-05-11 09:57:072010广州亚运会纪念徽章:棋类
日期:2011-05-13 16:29:13蜘蛛蛋
日期:2011-06-30 17:53:11紫蛋头
日期:2011-07-12 11:19:41复活蛋
日期:2011-07-21 22:31:43蜘蛛蛋
日期:2011-09-08 09:59:19ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15蛋疼蛋
日期:2011-11-15 22:29:342011新春纪念徽章
日期:2011-04-21 11:29:39
13#
 楼主| 发表于 2008-7-30 10:53 | 只看该作者
原帖由 yadnxawa 于 2008-7-30 10:17 发表
看range和select condition的F1 help,没说会有exception的啊。楼主看看是不是sign和option的赋值不对?


不用怀疑了,肯定是SQL语句字符长度限制,已经测试N回了。
我现在是把这个选择分段处理

使用道具 举报

回复
论坛徽章:
7
ERP板块每日发贴之星
日期:2008-04-12 01:03:50生肖徽章2007版:虎
日期:2009-01-02 11:38:48生肖徽章2007版:狗
日期:2009-06-02 12:40:59授权会员
日期:2009-06-23 17:27:032009日食纪念
日期:2009-07-22 09:30:00祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-01-04 08:33:08
14#
发表于 2008-7-30 12:29 | 只看该作者
有限制,记得在7千左右。

使用道具 举报

回复
论坛徽章:
121
紫蛋头
日期:2013-07-02 19:27:392014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:112014年世界杯参赛球队: 波黑
日期:2014-06-07 00:05:53喜羊羊
日期:2015-03-04 14:49:392015年新春福章
日期:2015-03-06 11:57:31
15#
发表于 2008-7-30 13:01 | 只看该作者
看到大家测试的结果都不一样
我在SE16里测试时,等于或小于9998条时,运行正常,大于9998就提示
    Possible error causes:
     o The maximum size of an SQL statement was exceeded.
     o The statement contains too many input variables.
     o The input data requires more space than is available.
     o ...

使用道具 举报

回复
论坛徽章:
13
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44暖羊羊
日期:2015-03-04 14:50:37ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:372010新春纪念徽章
日期:2010-03-01 11:21:032010新春纪念徽章
日期:2010-01-04 08:33:08ERP板块每日发贴之星
日期:2009-04-17 01:01:03ERP板块每日发贴之星
日期:2009-03-11 01:01:04ERP板块每日发贴之星
日期:2009-03-10 01:01:05ERP板块每日发贴之星
日期:2009-03-02 01:01:032009新春纪念徽章
日期:2009-01-04 14:52:28
16#
发表于 2008-7-30 13:40 | 只看该作者
The maximum size of an SQL statement was exceeded.

就是这个原因。换成for all entries in 就可以了。

使用道具 举报

回复
论坛徽章:
27
会员2007贡献徽章
日期:2007-09-26 18:42:102010广州亚运会纪念徽章:体育舞蹈
日期:2011-05-11 09:57:072010广州亚运会纪念徽章:棋类
日期:2011-05-13 16:29:13蜘蛛蛋
日期:2011-06-30 17:53:11紫蛋头
日期:2011-07-12 11:19:41复活蛋
日期:2011-07-21 22:31:43蜘蛛蛋
日期:2011-09-08 09:59:19ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15蛋疼蛋
日期:2011-11-15 22:29:342011新春纪念徽章
日期:2011-04-21 11:29:39
17#
 楼主| 发表于 2008-7-30 13:57 | 只看该作者
原帖由 wjfonhand 于 2008-7-30 13:40 发表
The maximum size of an SQL statement was exceeded.

就是这个原因。换成for all entries in 就可以了。


Range TABLE,你的FOR ALL ENTRIES IN怎样写?不如您给个例子我学习一下
就拿我上面给出的例子,其中的RANGE是这样声明的
DATA: s_aufnr2 TYPE RANGE OF aufm-aufnr,
      s_aufnr_line LIKE LINE OF s_aufnr2.

[ 本帖最后由 azqf 于 2008-7-30 13:58 编辑 ]

使用道具 举报

回复
论坛徽章:
2
生肖徽章:蛇
日期:2006-09-26 21:28:13ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
18#
发表于 2008-8-1 15:46 | 只看该作者
是容量有限制,
sql 语句的长度跟数据库有关,
以Oracle 32位为例,
语句最大为32Kb,超过就会报错.

使用道具 举报

回复
论坛徽章:
13
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44暖羊羊
日期:2015-03-04 14:50:37ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:372010新春纪念徽章
日期:2010-03-01 11:21:032010新春纪念徽章
日期:2010-01-04 08:33:08ERP板块每日发贴之星
日期:2009-04-17 01:01:03ERP板块每日发贴之星
日期:2009-03-11 01:01:04ERP板块每日发贴之星
日期:2009-03-10 01:01:05ERP板块每日发贴之星
日期:2009-03-02 01:01:032009新春纪念徽章
日期:2009-01-04 14:52:28
19#
发表于 2008-8-1 22:25 | 只看该作者
原帖由 azqf 于 2008-7-30 13:57 发表


Range TABLE,你的FOR ALL ENTRIES IN怎样写?不如您给个例子我学习一下
就拿我上面给出的例子,其中的RANGE是这样声明的
DATA: s_aufnr2 TYPE RANGE OF aufm-aufnr,
      s_aufnr_line LIKE LINE OF s_aufnr2.




怎么声明的不是重点,重点在于你怎么用。

ranges里面的行数多于1000行,用high这个字段的可能性不大,也就是都是 i eq low 这三个字段组成的值列表,那么改成for all entries in 一个含与low同结构field的内表是我的解决方案。

至于你的range里有了bt 和 high 字段,我这个方案是不可行的。不过,我想不到什么复杂的区间要用到1000行以上。

如果我没说清楚或你没听明白,请明示。

使用道具 举报

回复
论坛徽章:
27
会员2007贡献徽章
日期:2007-09-26 18:42:102010广州亚运会纪念徽章:体育舞蹈
日期:2011-05-11 09:57:072010广州亚运会纪念徽章:棋类
日期:2011-05-13 16:29:13蜘蛛蛋
日期:2011-06-30 17:53:11紫蛋头
日期:2011-07-12 11:19:41复活蛋
日期:2011-07-21 22:31:43蜘蛛蛋
日期:2011-09-08 09:59:19ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15蛋疼蛋
日期:2011-11-15 22:29:342011新春纪念徽章
日期:2011-04-21 11:29:39
20#
 楼主| 发表于 2008-8-2 01:16 | 只看该作者
原帖由 wjfonhand 于 2008-8-1 22:25 发表




怎么声明的不是重点,重点在于你怎么用。

ranges里面的行数多于1000行,用high这个字段的可能性不大,也就是都是 i eq low 这三个字段组成的值列表,那么改成for all entries in 一个含与low同结构field的内表是我的解决方案。

至于你的range里有了bt 和 high 字段,我这个方案是不可行的。不过,我想不到什么复杂的区间要用到1000行以上。

如果我没说清楚或你没听明白,请明示。


对,没有用HIGN,仅仅只是简单的LOW  ‘那么改成for all entries in 一个含与low同结构field的内表是我的解决方案。’这个有意义吗?我使用RANGE并不是用于屏幕,而是用于检查数据,为何还要再IN一个内表,而且这个内表仅只能存放一列数据?我想不出这样是什么好的解决方案。

并不是我没听明白,而是你并不知道这样做的本意,你并没有仔细看到是从数据库中取值,以及其KEY。ALL ENTRIES IN,我无论如何都不可能有KEY匹配的。

你明白了吗?

使用道具 举报

回复

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

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表