2015-09-06 129 views
1

问题: 过程的OUT变量未返回。ADO .NET OUT变量Oracle 10G与11G

背景: 我最近更新了一个从Oracle 10g到Oracle 11G的应用程序。我们正在使用Oracle客户端的12c版本。

该应用程序在.NET 3.5上运行。

Database db = CreateDatabase(connectionName); 
      var dbCmd = db.GetStoredProcCommand(procedureName); 

      ConvertParams(ref dbCmd, parameters); 

      try 
      { 
       iReturn = db.ExecuteNonQuery(dbCmd, _transaction); 
       if (transaction == null) //if a transaction hasn't been passed, it isn't intended to has control over commit/rollback out of method, so app can do it 
        _transaction.Commit(); 
      } 
      catch (Exception ex) 
      { 
       if (transaction == null) 
        _transaction.Rollback(); 
       throw ex; 
      } 
      finally 
      { 
       DebugSpCommand(procedureName, parameters); 
       GetOutputParams(ref parameters, dbCmd); 
       if (transaction == null) 
       { 
        if (_transaction.Connection != null) 
         _transaction.Connection.Close(); 
        _transaction.Dispose(); 
       } 
      } 
     } 
     catch (OracleException ex) 
     { 
      Framework.ErrorHandling.ErrorHandler.HandleException(ex, "DATA_LAYER_POLICY"); 
      Framework.Logging.Logger.Write(ex.Message, LogCategories.Debug); 
      iReturn = ex.Code; 
     } 
     catch (Exception ex) 
     { 
      Framework.ErrorHandling.ErrorHandler.HandleException(ex, "DATA_LAYER_POLICY"); 
      Framework.Logging.Logger.Write(ex.Message, LogCategories.Debug); 
     } 

回答

0

您可以使用out变量在存储过程

+0

的问题是,我出了PL/SQL程序中的变量是返回一个数,我的C#代码在等一个字符。 由于某些原因,它正在使用Oracle 10G。 –