.NETアプリケーションからOracleデータベースにアクセスしています。 ;結果=「」、アサートに失敗した -Oracle SQL文LONGがデータベースから取得されない
using (OracleConnection conn = new OracleConnection(Oradb))
{
conn.Open();
string sql = "SELECT RI_DESCRIPTION
FROM RI_RISK
WHERE RI_CODE = 'GAIL'";
OracleCommand cmd = new OracleCommand(sql, conn);
cmd.CommandType = CommandType.Text;
OracleDataReader dr = cmd.ExecuteReader();
dr.Read();
var result = dr.GetString(0);
Assert.AreEqual("Golden Arches Insurance", result);
}
を今、私はこの文は何かを返すように取得することはできません、次のように私のコードの構造があります
しかし、私はこの文が期待されているものを返すために取得することができます。
string sql = "SELECT CLI_ABBRNAME
FROM CLI_CLIENT
WHERE CLI_CLIENTNUMBER = 00404";
私は、テーブル名とカラム名が正しいことをする回数をチェックしています。私が見ることができる唯一の違いは、データ型です:
- RI_DESCRIPTIONは
- LONG RI_CODEあるVARCHAR2
- あるCLI_CLIENTNUMBERはVARCHAR2
- CLI_ABBRNAMEあるVARHCHAR2
したがって、何か私はそこです私がコードでやっていないLONGと関係がありますか?また、CLI_CLIENTNUMBERは実際にはVARCHAR2です。なぜなら、VARCHAR2のRI_CODEでは、 'GAIL'の周りにアポストロフィが必要です(そうでなければ、無効な識別子?例外
** EDIT
文はSQL Plusを
に完璧に適しています** EDIT - SOLUTION
トリックは、答えのリンクを以下、ORACLECを設定することでしたオブジェクトInitialLONGGetchSizeを-1に設定します。
DBは混乱のように見える:説明は番号(LONG)すべきではない、と番号(LONG)が「ゴールデンアーチ保険」することはできませんどのようなあなたがやっていることに相当します。 –
(アプリケーションからではなく)データベースに対してSQLを直接実行します - 期待される結果が得られることを確認してください –