如何将日期时间转换为OracleTimeStamp

我有一个问题,我无法使用ODP.NET从数据库运行函数,因为我无法将其中一个参数转换为时间戳。

我正在使用:ODAC121010Xcopy_32bit ODP.NET4

我检查了很多问题,我也尝试将日期时间对象转换为字符串格式来传递它。 我已经花了几个小时了,老实说不知道我是否错过了一些东西。 这似乎是这样的常识,我无法弄清楚为什么这不起作用,任何帮助都将不胜感激。

这是我的代码:

using (var Command = new OracleCommand("PMH.QueryGetSql", Connection))
{
    Command.CommandType = CommandType.StoredProcedure;
    Connection.Open();

    OracleTimeStamp ots = new OracleTimeStamp(DateTime.Now);
    Command.Parameters.Add("return", OracleDbType.Varchar2, ParameterDirection.ReturnValue);
    Command.Parameters.Add("a", OracleDbType.Int32, ParameterDirection.Input).Value = 1001;
    Command.Parameters.Add("b", OracleDbType.TimeStamp, ParameterDirection.Input).Value = ots;


    Command.ExecuteNonQuery();
    Console.WriteLine(Command.Parameters["return"].Value);
    Console.WriteLine("Completed");
}

这是我得到的异常:

Oracle.DataAccess.Client.OracleException ORA-06502:PL / SQL:数值或值err或:字符串缓冲区太小ORA-06512:在Oracle.DataAccess.Client.OracleException.HandleErrorH的第1行elper(Int32 errCode,OracleConnection conn ,IntPtr opsErrCtx,OpoSqlValCtx * pOpo SqlValCtx,Object src,String procedure,Boolean bCheck,Int32 isRecoverable)at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode,Oracle Connection conn,String procedure,IntPtr opsErrCtx,OpoSqlValCtx * pOpoSqlValCtx,Object src,布尔bCheck)在Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()

最后,这是我试图运行的函数:

  FUNCTION QueryGetSql(nQueryId INTEGER,dSyncFromTimeStamp TIMESTAMP DEFAULT NULL) RETURN VARCHAR2 IS
--nResult       INTEGER := 0;
sQuerySql       VARCHAR2(32767);
sTableName      VARCHAR2(100);
sPKName         VARCHAR2(100);
sQueryColumns   VARCHAR2(32767);
sConditions     VARCHAR2(32767);
sNullColumns    VARCHAR2(32767);

CURSOR qc_cur IS
SELECT column_name
  FROM pmh$_app_query_columns
 WHERE query_id = nQueryId
 ORDER BY seq ASC;

另外请注意,尽管我有权访问oracle代码,但我没有编写它,因此不希望更改它。


您必须指定返回值的最大大小,即

Command.Parameters.Add("return", OracleDbType.Varchar2, 1000, null, ParameterDirection.ReturnValue);

“null”是初始值,在VB.NET中你必须使用“Nothing”来代替。

链接地址: http://www.djcxy.com/p/67187.html

上一篇: How to Convert Datetime to OracleTimeStamp

下一篇: c#