我一直在绞尽脑汁,似乎找不到这个问题的答案。我对 Informix 知之甚少。我需要调用一个名为 getagentstateintervaldata 的 Informix 过程
该过程的参数和类型是:
p_eStartDate, DATETIME
p_startTime, DATETIME
p_endTime, DATETIME
p_rgSelected, SMALLINT
p_skillSelected, SMALLINT
p_tmSelected, SMALLINT
我正在使用 IBM Informix ODBC 驱动程序版本 3.70 Visual Studio 2010、VB.Net、.Net Framework 3.5
这是我用来触发该过程的代码。
首先是我用来确保我可以连接到数据库并获取数据的测试代码。这段代码工作正常,我得到了 dtData 数据表中返回的数据。
Dim dtData As Data.DataTable = New Data.DataTable
Dim xQuery As String = ""
xQuery = "Select *, (t2.EventDateTime + INTERVAL(-6) HOUR TO HOUR) as NewDatTime "
xQuery += "From Resource as t1 "
xQuery += "INNER JOIN AgentStateDetail AS t2 ON t2.agentID = t1.resourceID and t1.dateInactive is null "
xQuery += "Where t1.ResourceLoginId LIKE '51cserv%' "
xQuery += "Order By t2.EventDateTime;"
Dim conn As OdbcConnection = New Odbc.OdbcConnection(sysODBCConnStr)
conn.ConnectionTimeout = 0
Dim objCmd As New Odbc.OdbcDataAdapter(xQuery, conn)
conn.Open()
'Fill the dataset
objCmd.Fill(dtData)
'Close connection
If conn.State = Data.ConnectionState.Open Then conn.Close()
conn.Dispose()
现在是触发 Informix 过程的代码。这是不断给我错误的那个。我没有任何方法可以像 MS SQL 的管理工作室那样连接到 Informix 数据库。
Dim dtData As Data.DataTable = New Data.DataTable
Dim xQuery As String = ""
xQuery = "execute procedure getagentstateintervaldata (date('11-01-13'),to_date('12:01:00.00', '%H:%M'),to_date('11:59:59.00', '%H:%M'),1,1,1)"
Dim conn As OdbcConnection = New Odbc.OdbcConnection(sysODBCConnStr)
conn.ConnectionTimeout = 0
Dim objCmd As New Odbc.OdbcDataAdapter(xQuery, conn)
conn.Open()
'Fill the dataset
objCmd.Fill(dtData)
'Close connection
If conn.State = Data.ConnectionState.Open Then conn.Close()
conn.Dispose()
我得到的错误是:
错误 [22008] [Informix][Informix ODBC 驱动程序][Informix] 日期时间或间隔值中的字段不正确或在日期时间字段上指定了非法操作。
编辑- 在这里要清楚一点,我的问题出在 Informix 过程调用中。我不理解正在返回的错误,并且我发现 IBM Informix 论坛的帮助很少。
谢谢大家能给我的任何帮助。