关于PB中在DW对varchar(char,string)超过255的处理

来源:互联网 发布:js字符串拼接引号 编辑:程序博客网 时间:2024/05/18 02:06


直连和text
SQL Server 2000直连情况下,对于varchar(500)这样的字段,pb的dw只能取出前面255个字符。
如:表t1有字段c1(id),c2(varchar(500))

解决办法:
1,用下面的sql可以取到全部的c2:
Select substring(c2,1,255),substring(c2,256,255)
Into :ls_1,:ls_2
From t1
Where c1 = :ls_id;
ls_all=ls_1+ls_2

2,用下面的sql可以取到全部的c2:
Select convert(text,c2) into :ls_all
From t1
Where c1=:ls_id;

3,数据窗口中:
假设有这样一个数据窗口:
  SELECT c1,c2
    FROM t1
为了在直连情况下能获取全部的c2,可将其修改为:
SELECT c1,convert(text,c2) as c2
  FROM t2
并设置数据窗口的update属性和更新前一样,limit设为0或500即可。

另外,可以通过设置SQLCA.DBParm = "OptSelectBlob=1,DBTextLimit='8000'"的办法使得DW能对TEXT字段支持8000字节
(PB的DW对MSS默认只支持4099字节)

而对于text类型的字段,可以用下面的方法读取(需要显示转换):
select cast(column_texttype as varchar(20..)) into :ls_c from ta where ..;