众所周知,Object Script是一个弱类型开发语言,%String是我们非常常用的一个类型,时不时有客户在初次接触Object Script编写程序时遇到%String长度限制的问题,在这里做一个简单总结,以便于相关开发人员作为参考。
1. MAXLEN设置字符串的长度。
Property Name As %String(MAXLEN = 50);
a) 如果不设置MAXLEN, 默认长度限制为50
b) MAXLEN = "", 没有限制长度,也就是字符串本身的长度限制。
如果超限,您将会看到如下报错,
错误 #7201: 数据类型值'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz'的长度超过50允许的MAXLEN
2. 字符串本身的长度限制。
在没有开启长字符串的情况下,%String类型的长度限制是32,767个字符。
如果超限,您会遇到报错<MAXSTRING>,如果遇到这个报错,建议您改用流类型%Stream,如%Stream.FileCharacter, %Stream.GlobalCharacter等等,更多关于如何使用流类型,详见如下在线文档,
http://dreamymclean.intersystems.skytapdns.com:52773/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_propstream
3. 开启长字符串
打开系统管理页面System Management Portal(SMP),系统 > 配置 > 内存和启动,选中“启用长字符串”,选中后不需要重启系统使其生效。启用长字符串之后,字符串的长度限制扩展为3,641,144个字符
那对于整个表,假设我创建一张表,里面的String 类型总长度(各个字段长度之和)是否有限制。
有的,由于单个字段长度有限制,因此总长也有限制