【发布时间】:2011-12-03 01:41:37
【问题描述】:
当我使用我的 C# 代码运行 pl/sql 查询[通过存储过程] 时,我收到一个错误: 我该如何解决?请指教。 注意:我在代码中为 providerSpecificTypes 传递 false。
Error Message:
System.Data.OracleClient.OracleException: OCI-22053: overflow error
at System.Data.Common.DbDataAdapter.FillErrorHandler(Exception e, DataTable dataTable, Object[] dataValues)
at System.Data.Common.DbDataAdapter.FillLoadDataRowChunk(SchemaMapping mapping, Int32 startRecord, Int32 maxRecords)
at System.Data.Common.DbDataAdapter.FillFromReader(Object data, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
at System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command,
代码如下:
DataSet ds = new DataSet();
try
{
this.OpenDBConnection();
this.dbAdapter.ReturnProviderSpecificTypes = providerSpecificTypes;
this.dbAdapter.Fill(ds);
}
catch
{
throw;
}
finally
{
CloseDBConnection();
this.cmd.Parameters.Clear();
}
return ds;
查询:
SELECT client_id, TO_CHAR (business_dt, 'MM/DD/YYYY') AS business_dt
, mkt_type
, mkt_name
, product_name
, period
, TO_CHAR (start_dt, 'MM/DD/YYYY') AS start_dt
, TO_CHAR (end_dt, 'MM/DD/YYYY') AS end_dt
, duration
, term
, NULL AS strike_price
, instrument_type
, final_price
, NULL AS product_price
, units
, NULL AS expiry_dt
, mkt_close
, cons_flag
【问题讨论】:
-
什么数据库版本?什么是数据类型?确保将 Date 或 DateTime 变量传递到 TO_CHAR 函数中...
-
请添加查询的其余部分。列的数据类型也很好
-
数据库是 Oracle 10g。是的,我正在将 DateTime 变量传递给 to_char 函数。谢谢。
-
自从我弄乱 10g 以来已经有一段时间了,但我知道 9i 对其 DBMS_OUTPUT.put_line() 函数的字符限制为(我认为)2000 个字符。我在积极编写 PL/SQL 时遇到了几次这种限制......