私は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);
}
このコードブロックは例外をスローしませんでした。実行されましたが、受け取ったのは空のデータセットでした。しかし、クエリを直接使用してデータをフェッチしようとすると、結果が得られました。
それで、私がストアドプロシージャにアクセスしようとしている方法は正しいですか?またはストアドプロシージャに間違いはありますか?誰かがエラーまたはこれを行うための最良の方法を指摘できますか?
前もって感謝します。