0

我在 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

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

4

1 回答 1

0

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

  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 应用程序的数据是什么样的。你可能会在那里大吃一惊……
于 2020-01-28T14:17:45.817 回答