Oracle 12c client with .NET legacy Oracle driver

若是使用Oracle 12c Client和.NET的Oracle driver,你极可能会碰到跟下面同样的问题:服务器

https://www.codeproject.com/Questions/876769/Oracle-client-problem-with-output-parameteroracle

咱们昨天把一个老程序移到新服务器后就遇到了。具体表现为:code

一个stored procedure(StoredProcedure1)有一个output parameter,名为o_param,程序片段为:get

OracleCommand oracleCommand = new OracleCommand();
oracleCommand.Connection = dbConnection;
oracleCommand.CommandText = "StoredProcedure1";
oracleCommand.CommandType = CommandType.StoredProcedure;
OracleParameter oracleParameter = new OracleParameter("o_param", OracleType.VarChar, 64);
oracleParameter.Direction = ParameterDirection.Output;
oracleCommand.Parameters.Add(oracleParameter);
oracleCommand.ExecuteNonQuery();
string text = oracleParameter.Value.ToString();
Console.WriteLine("o_param: "+text);string

结果会获得一半的实际返回值。it

解决方法就是上面链接里说的:io

1. parameter类型改为Char而后把返回值trim掉空格:cli

  OracleParameter oracleParameter = new OracleParameter("o_param", OracleType.Char, 64);程序

  ...方法

  string text = oracleParameter.Value.ToString().Trim();

 

或:

2. 改用Oracle 11g client

最好仍是改用Oracle Managed Client,由于.Net Oracle Drive已是deprecated了。

相关文章
相关标签/搜索