2011-10-03 13 views
0

SQLクエリの計算結果を取得するにはどうすればよいですか?.NETとOracleを使用してSQLクエリを読み取る最善の方法

言ってやるが、2例」

CASE 1 
RETURN "Process ok" 
CASE 2 
RETURN "Process failed" 

があるこれは、ストアドプロシージャから返されます。

.NET、C#(Windowsフォーム)にこれを読むための最良の方法はどれ?

+2

あなたが何をしようとしたのですか? –

+1

http://msdn.microsoft.com/en-us/library/haa3afyz(v=vs.71).aspxを問い合わせてください。より一般的な質問 –

+2

への一般的な答えですDataReaderを使用して返された文字列を読み取るのはどうですか? – Marco

答えて

0

複数のレコードを取得できると思われる場合はDataReader、レコードが1つだけの場合は複数の列がない場合はExecuteScalarを使用してください。

ここでストアドプロシージャを呼び出すと、読者を取得する方法は、その最初の列を読む:

using(var conn = new OracleConnection("Data Source=oracledb;User Id=UserID;Password=Password;")) 
{ 
    OracleCommand cmd = new OracleCommand(); 
    cmd.Connection = conn; 
    cmd.CommandText = "storedProcedurename"; 
    cmd.CommandType = CommandType.StoredProcedure; 

    cmd.Parameters.Add(...); 

    conn.Open(); 
    OracleDataReader dr = cmd.ExecuteReader(); 

    while(dr.Read()) 
    { 
     var yourResult = dr[0].ToString(); 
    } 
} 
0

ストアドプロシージャを呼び出している場合は、あなたが戻ってレコードセットを取得しようとしている場合、それが依存します。

ストアドプロシージャに関しては、outまたはinoutのパラメータに値を割り当てたり、レコードセットを生成したりすることができます。前者の場合は、Directionプロパティを使用してパラメータの種類を指定する必要があります。後者については、command.CommandTypeCommandType.StoredProcedureに設定する必要がある以外は、すべてが通常のクエリとして機能します。

典型的なSQLクエリは次のようになります。

私はあなたができるだけ汎用コードを取得するには、それを生成するために DbProviderFactoryを使用することをお勧めしますデータベース接続用として
using (var cmd = connection.CreateCommand()) 
{ 
    cmd.CommandText = "SELECT something FROM YourTable"; 
    using (var reader = cmd.ExecuteReader()) 
    { 
     while (reader.Read()) 
     { 
      Console.WriteLine(reader["something"]); 
     } 
    } 

} 

http://www.davidhayden.com/blog/dave/archive/2007/10/08/CreatingDataAccessLayerUsingDbProviderFactoriesDbProviderFactory.aspx

関連する問題