1

私はOracleを初めて使用します。私たちの会社には、Oracleと.Netを使用するプロジェクトの要件があります。だから私はデモアプリケーションを実行しようとしていました。DBおよびVS2010としてOracle10gXEを使用しています。

コンパイルされた単純なselectクエリを使用してプロシージャを作成しました(グーグルでこのプロシージャ形式を取得しました)。

コンパイルされたプロシージャ

XEダッシュボード自体のSQLコマンドプロンプトからストアドプロシージャを実行しました。これが結果でした:

ここに画像の説明を入力してください

次に、そのストアドプロシージャを呼び出すコードをC#で記述しました。

string sqlCon = "Data Source=xe;Persist Security Info=True;User     ID=sa;Password=password;Unicode=True;Provider=OraOLEDB.Oracle;";
OleDbConnection Con = new OleDbConnection(sqlCon);
OleDbCommand cmd = new OleDbCommand();

DataSet ds = null;
OleDbDataAdapter adapter;

try
{
    Con.Open();
    ////Stored procedure calling. It is already in sample db.
    cmd.CommandText = "TESTPROC";
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Connection = Con;

    ds = new DataSet();
    adapter = new OleDbDataAdapter(cmd);
    adapter.Fill(ds, "Users");

    return ds.Tables[0];
 }
 catch (Exception ex)
 {
    throw new Exception(ex.Message);
 }

このコードブロックは例外をスローしませんでした。実行されましたが、受け取ったのは空のデータセットでした。しかし、クエリを直接使用してデータをフェッチしようとすると、結果が得られました。

それで、私がストアドプロシージャにアクセスしようとしている方法は正しいですか?またはストアドプロシージャに間違いはありますか?誰かがエラーまたはこれを行うための最良の方法を指摘できますか?

前もって感謝します。

4

2 に答える 2

1

提案: 「結果」を「出力」パラメータとして宣言してみてください:

役立つ可能性のある別のリンクを次に示します。

于 2012-10-04T05:26:17.577 に答える
1

役立つ別のリンクがあります。

http://www.akadia.com/services/ora_return_result_set.html

于 2013-04-04T13:26:21.117 に答える