我正在尝试从iSeries数据库中提取数据并从数据中创建Excel报告。我正在使用C#和EPPlus库来执行此操作。下面是我的代码,用于生成repor:
queryString = @"SELECT oacspo, pldesc, obivdt, oainno, obitno, obitd1, obitd2, obqtsh, obaslp, oblnam
FROM myLib.hshed
LEFT JOIN myLib.cusms
ON oacsno = cmcsno
LEFT JOIN myLib.hsdet
ON oahssq = obhssq
LEFT JOIN myLib.itemctrl
ON obitno = icitno
LEFT JOIN myLib.plinesj
ON icline = plcode
WHERE (oaipdt BETWEEN ? AND ?) AND icdlcu = 'Y' AND oacsno = ?
ORDER BY pldesc, oainno, obitno";
command = new OdbcCommand(queryString, connection);
command.CommandTimeout = 0;
parameter = command.Parameters.Add("@DateStart", OdbcType.Int);
parameter.Value = startDate;
parameter = command.Parameters.Add("@DateEnd", OdbcType.Int);
parameter.Value = endDate;
parameter = command.Parameters.Add("@CustomerNo", OdbcType.Int);
parameter.Value = custNo;
OdbcDataReader readerRpt = command.ExecuteReader();
那个运行正常但是当我向WHERE子句添加一个规范(缩小到特定部门)时,我收到了一个错误:
WHERE (oaipdt BETWEEN ? AND ?) AND icdlcu = 'Y' AND oacsno = ? AND icline = 'O'
错误:错误[HY000] [IBM] [iSeries Access ODBC驱动程序] [DB2 UDB] SQL0666 - SQL查询超出指定的时间限制或存储限制。
我做了一些研究并将CommandTimeout属性更改为0
command.CommandTimeout = 0;
但结果是程序在我执行行
时挂起OdbcDataReader readerRpt = command.ExecuteReader();
没有很多数据(大约1,000行)所以我认为它不会超过存储限制。或者它是基于我可以在查询字符串中放入多少个字符? (这意味着我不能有一个很长的SQL语句。)
非常感谢有关如何使其发挥作用的一些指导。谢谢