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了。

相關文章
相關標籤/搜索