转换失败,因为日期时间数据值溢出了为使用者缓冲区中的日期时间值部分指定的类型



我在Sybase ASE中有一个包含日期参数的存储过程,因此当我创建OLE DB连接并将日期参数传递给OLE DB命令时,我们正在映射到OLEDBType.DBTimeStamp类型的参数,存储过程中的日期时间参数类型是smalldatetime。 下面是示例代码。

OLEDBConnection  con = new OLEDBConnection(connectionstring);
con.open;
OLEDBCommand cmd = new OLEDBCommand(con);
cmd.QueryString = "dbo.job_xb_new"
cmd.QueryType = "Stored Procedure";
cmd.Parameters.Add("@signoff",OLEType.DBTimeStamp);
cmd.Parameters("@signoff").Value = Datetime.now;
cmd.executeNonQuery(); -----------> ERROR HERE

在执行存储过程时,我收到错误。 "转换失败,因为日期时间数据值溢出了使用者缓冲区中为日期时间值部分指定的类型"? 请帮忙!!

有了唯一给出的信息,可能会有一个解决方案可以尝试。

  1. 将输入值的数据类型更改为存储的过程,以 char/varchar
create procedure dbo.myProc
@inDate varchar(20)
AS
BEGIN
..
END
  1. 在传递到查询之前,使用 CONVERT 执行内部转换。
SET @inDate = CONVERT(datetime,@inDate,[style parameter number])
  1. 要进行故障排除,只需注释掉过程中的所有内容,然后首先选择@inDate以确定从 OLE DB 应用传入的数据的外观。你可能会在那里感到惊讶...

相关内容

  • 没有找到相关文章

最新更新