情况:我要写一个接口程序 需要把我方软件(DELPHI+SQL2000 ) 数据传给 对方软件(DELPHI+ORACLE)问题:  我的数据一提交就会提示  返回值 -1 返回信息:ORA-01756: 括号内的字符串没有正确结束 的报错信息下面是我用DELPHI 输出的参数   大家帮忙分析一下:
('A0016', '施慧达片苯磺酸左旋氨氯地平片', '施慧达片苯磺酸左旋氨氯地平片', 'fd010010362', '0', '33', '1', '盒', '070905', 40310, '吉林省天风制药有限责', 'ASDAD', 'eee', '零售', 'fd010010362', 'admin')这里的 40301 是我传出来的 日期格式的参数     
就是我把日期转换成日期格式后 由DELPHI输出的参数为  40301 请问 输出这样的 格式对不对      对方开发说我必须输出的格式为  20080604   这样才行
我将日期格式全部转换成整型,即以前43031的日期,转换成20080604的字符,在将字符转换成整型
这样再传给 对方  这样可行吗? 
以上两种的输出 都报 返回值 -1 返回信息:ORA-01756: 括号内的字符串没有正确结束  这样的错误 
我不知道是 因为日期参数导致的 还是其他的原因 导致的。如果是因为日期参数输出的问题   请问我该怎么来处理日期输出啊?
如果不是日期格式 我将赶紧取 分析其他的原因。因为对方肯定 是我这边的日期格式输出不对  不肯继续分析他们的代码

解决方案 »

  1.   

    这种事刚刚做过,如果方便的话,就把sql2000中的日期转换成yyyymmdd的字符格式,一定可以成功。补充:
    oracle的程序一般日期都用的日期格式,所以当你的输入有形如20081332这样越界的值的话,一定要改成正确的,不然也会报错。
      

  2.   

    用formatdatetime('yyyyMMdd',date)转换 ,再把转换结果用引号括起来
      

  3.   

    40310这样肯定不行的,你要转换为Oracle需要的格式才行,Oracle的日期,应该直接使用字符串也可以啊.
      

  4.   

    不要老是把精力停留在日期上面,出了日期我觉得有可能还有一个问题,是不是你传出的字符串有超过他的数据库字段长度的问题,如'施慧达片苯磺酸左旋氨氯地平片', '施慧达片苯磺酸左旋氨氯地平片',如果字段超长,他那边在操作oracle数据库时,oracle数据库有可能把一个汉字截断,有可能引起你说的问题,我只是猜测,仅供参考
      

  5.   

    你要直接操作对方的数据的话
    1、需要访问权限
    2、需要表及表结构的全部说明(包括代码规则等)建议通过中间库导出,如excel,再由对方导入数据。
      

  6.   

    1.为什么要设置自己输出的日期格式为整型?你难道不可以直接输出'20080604'这样的'yyyymmdd'的格式吗?delphi和sql2000都能识别字符型的日期,比如‘2008-06-04’在delphi和sql2000中可以当作字符,也可以当作日期直接插入日期型的数据字段中,并且这种格式也容易让对方识别和接收。(注意sql2000的默认日期格式和操作系统的默认日期格式)
    2."括号内的字符串没有正确结束"最大的可能还是发生在这个传递日期的参数上,本来对方oracle的相应字段是日期格式,你传过去的却是个整型值,在没有转换的情况下应该会报错的,先把这个格式弄对了(当然也得分析所有传过去的字段是否存在越界问题,这个估计得对方分析代码了,或者他们提供每个字段的类型和长度限制,你不超过限制就行了)