起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: dragonsoft

[结]新的问题急急,汉字被截断。**

[复制链接]
发表于 2008-2-21 11:50:38 | 显示全部楼层
客户端执行效果

1.png

8.82 KB, 下载次数: 119

回复 支持 反对

使用道具 举报

发表于 2008-2-22 10:27:15 | 显示全部楼层
我又做了一个测试
Oracle数据库装在 A机器上,操作系统是 RedHat Linux 4企业版
X3服务端安装在 B机器上,操作系统也是 RedHat Linux 4企业版
执行存储过程,结果也是正确的,汉字显示正常
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-22 14:57:52 | 显示全部楼层
那就见鬼了,我看看还是你们到公安部,可以连上公安网,看看我们的真实环境试试,可以由我们的同事带你去公安部。
回复 支持 反对

使用道具 举报

发表于 2008-2-25 11:32:24 | 显示全部楼层
楼主,在你的环境上,做一个简单的例子看看呢,比如就用10楼的存储过程,避免因为存储过程本身的问题造成的错误
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-25 13:46:25 | 显示全部楼层
我们在X3平台上(部署在linux)做了一个测试,调用存储过程从数据库读取一个字段(用最简单的select语句),将其值显示在文本框中,结果字段中包含中文的都显示成??,数字和字母都能正常显示。
以上情况表明,汉字被截断与存储过程本身没有关系。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-25 14:08:21 | 显示全部楼层
顶一下。
回复 支持 反对

使用道具 举报

发表于 2008-2-25 15:14:04 | 显示全部楼层
我又做了一个存储过程,
CREATE OR REPLACE PROCEDURE "TEST_PROC1" (inprm in varchar2,
inprm1 in varchar2,
inprm2 in varchar2,
outprm out varchar2) is
begin
  INSERT INTO TSYSINFO
  (FINFOID, FINFOSCOPE , FCLIENTACCOUNT , FINFOVALUE )
  VALUES
  (inprm , inprm1, inprm2, inprm2 || inprm1 );
  outprm:=inprm || inprm1 || inprm2;
end TEST_PROC1;
在平台上运行,插入表中的数据是对的,但是返回参数中汉字显示?
楼主的现象跟我的一样吗?
回复 支持 反对

使用道具 举报

发表于 2008-2-25 16:32:03 | 显示全部楼层
楼主可以不用输出参数,用返回结果集的方式
============
create or replace package pak_test as
-- Public type declarations
  type cur_test is ref CURSOR;
end;

CREATE OR REPLACE PROCEDURE TEST_PROC2 (inprm in varchar2,
inprm1 in varchar2,
inprm2 in varchar2,
outprm out pak_test.cur_test) is
begin
  INSERT INTO TSYSINFO
  (FINFOID, FINFOSCOPE , FCLIENTACCOUNT , FINFOVALUE )
  VALUES
  (inprm , inprm1, inprm2, inprm2 || inprm1 );
  open outprm for select inprm || inprm1 || inprm2 from DUAL;
end TEST_PROC2;
回复 支持 反对

使用道具 举报

发表于 2008-2-25 16:33:09 | 显示全部楼层
object DataSetCCGCSJJ1: TStoredProcDataSet
  Relation.DeleteRule = krNoAction
  Relation.UpdateRule = krNoAction
  ID = 'CCGCSJJ1'
  DisplayName = #23384#20648#36807#31243#25968#25454#38598'1'
  Database.Reference = '@Biz:\OPERATION\OperationDB.Database'
  CheckConstraints = <>
  Params = <
    item
      DataType = ftString
      Name = 'INPRM'
      ParamType = ptInput
    end
    item
      DataType = ftString
      Name = 'INPRM1'
      ParamType = ptInput
    end
    item
      DataType = ftString
      Name = 'INPRM2'
      ParamType = ptInput
    end
    item
      DataType = ftCursor
      Name = 'OUTPRM'
      ParamType = ptOutput
    end>
  StoredProcName = 'TEST_PROC2'
  Left = 448
  Top = 136
end
回复 支持 反对

使用道具 举报

发表于 2008-2-25 16:33:32 | 显示全部楼层
procedure TCT1.Button2Click(Sender: TObject);
begin
  DataSetCCGCSJJ1.Params.ParamByName('inprm' ).AsString := Edit1.Text;
  DataSetCCGCSJJ1.Params.ParamByName('inprm1').AsString := Edit2.Text;
  DataSetCCGCSJJ1.Params.ParamByName('inprm2').AsString := Edit3.Text;
  DataSetCCGCSJJ1.Open;
  Dialogs.Showmessage(DataSetCCGCSJJ1.Fields[0].AsString);
end;
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-7 15:40 , Processed in 0.040584 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表