Stored procedures 通过dbExpress查询DB2forIBMi存储过程时出现CCSID错误 背景
我将radstudioxe2与dbExpress一起使用,试图从驻留在db2foribmi(AS/400)上的存储过程中检索结果集 具有AS/400 I使用的dbExpress驱动程序() 过程有一个smallint参数。我在Stored procedures 通过dbExpress查询DB2forIBMi存储过程时出现CCSID错误 背景,stored-procedures,character-encoding,db2,ibm-midrange,dbexpress,Stored Procedures,Character Encoding,Db2,Ibm Midrange,Dbexpress,我将radstudioxe2与dbExpress一起使用,试图从驻留在db2foribmi(AS/400)上的存储过程中检索结果集 具有AS/400 I使用的dbExpress驱动程序() 过程有一个smallint参数。我在TSQLQuery中使用调用MYPROC(1)查询它 我的TSQLConnection参数: DriverUnit=DbxDynalink LibraryName=dbexpca400.dll GetDriverFunc=getSQLDriverCA400 Database
TSQLQuery
中使用调用MYPROC(1)
查询它
我的TSQLConnection
参数:
DriverUnit=DbxDynalink
LibraryName=dbexpca400.dll
GetDriverFunc=getSQLDriverCA400
Database=192.168.81.97
User_Name=myusername
Password=mypwd
Role=MYDEFAULTSCHEMA
VendorLib=cwbdb.dll
ErrorResourceFile=
ConnectionString=
HostName=
MaxBlobSize=-1
AS400 TransIsolation=DirtyRead
CommitRetain=True
AutoCommit=True
ServerCharSet=
LocaleCode=0000
RowsetSize=-1
Connection Timeout=-1
Trim Char=False
错误
当我激活TSQLQuery
时,我得到
cwbDB_Execute返回错误代码6038
服务器错误类别2代码-403
消息id:PWS0011
这是一次错误的核查。
原因…:2 durante la conversione dal CCSID客户端0 nel CCSID del服务器1144验证错误。[…]2--Il CCSID客户机o del serverè0 e nonèconsensito。[……]
意大利语中说服务器CCSID为1144,而客户端CCSID为0,这是不允许的
我试过的
所以我尝试使用ServerCharSet
参数设置它,这是受驱动程序自述文件启发的,该文件对希伯来语使用4241255
。我有一个意大利系统,字符集695,代码页1144。我为ServerCharSet
参数尝试了许多组合,但得到的最好结果是两个新错误:
cwbDB_PreparedDescripte返回错误代码6036 服务器错误类别1代码-104 消息id:[已损坏的字符] [带有损坏字符的消息…]ServerCharSet=6951144
cwbDB_StartServer返回错误代码6052 CWBNL0102-La tabella di conversione C:\Users\Public\Documents\IBM\Client Access\02b734b0.tbl invalida o corrotta CWBNL0101-验证数据转换过程中的错误,代码页13488 a 695 CWBNL0101-验证数据转换期间的错误代码第1144 a 695页 CWBDB0052-验证数据转换过程中的错误 CWBDB0052-验证数据转换过程中的错误 [……]ServerCharSet=1144695
LocaleCode
参数(未记录)没有任何区别
问题
如何正确设置客户端CCSID?文档显示了从和到字符集。只需将ServerCharSet设置为37,我就可以:
ServerCharSet=37谢谢Jerry,我无法尝试,因为我不再使用dbExpress,但我希望有人能验证您的解决方案并给出反馈。