2012-03-22 17 views
0

次のストアドプロシージャを呼び出すC#コードがありますが、データは返されません(空の/ nullデータセット)。TOADでストアドプロシージャを実行すると、結果(1行)。コマンドテキストを「SELECT * FROM DUAL」に変更できます。データが返されるため、データベースが正常に接続されています。格納されたprocは1つの入力パラメータを取り、5つのフィールドを出力します。ここに私のコードだ:C#OleDB - データを返さないOracleストアドプロシージャ

 string connStr = "Provider=OraOLEDB.Oracle;Data Source=database;User Id=username;Password=password;PLSQLRSet=1;"; 
     OleDbConnection oracleConn = new OleDbConnection(connStr); 

     OleDbCommand cmd = new OleDbCommand("{call foo.bar(?, ?, ?, ?, ?, ?)}", oracleConn); 
     cmd.CommandType = CommandType.Text; 
     cmd.Parameters.Add("p_login", OleDbType.VarChar, 50); 
     cmd.Parameters["p_login"].Direction = ParameterDirection.Input; 
     cmd.Parameters["p_login"].Value= "FOOBAR"; 
     cmd.Parameters.Add("p_user_id", OleDbType.VarChar, 50); 
     cmd.Parameters["p_user_id"].Direction = ParameterDirection.Output; 
     cmd.Parameters.Add("p_user_role", OleDbType.VarChar, 50); 
     cmd.Parameters["p_user_role"].Direction = ParameterDirection.Output; 
     cmd.Parameters.Add("p_user_first_name", OleDbType.VarChar, 50); 
     cmd.Parameters["p_user_first_name"].Direction = ParameterDirection.Output; 
     cmd.Parameters.Add("p_user_last_name", OleDbType.VarChar, 50); 
     cmd.Parameters["p_user_last_name"].Direction = ParameterDirection.Output; 
     cmd.Parameters.Add("p_user_terr_nbr", OleDbType.VarChar, 50); 
     cmd.Parameters["p_user_terr_nbr"].Direction = ParameterDirection.Output; 
     OleDbDataAdapter da = new OleDbDataAdapter(cmd); 
     DataSet ds = new DataSet(); 
     da.Fill(ds, "dsTest"); 
     return ds; 

答えて

0

私は、ストアドプロシージャにログインし、Oracleインスタンスまたは手順が全く呼び出された場合に送信されたデータの種類を見て挿入お勧めします。そしてそこからデバッグします。

一般的に、送信しているデータタイプと入力/出力パラメータの間には、いくつかの接続が切断されている可能性があります。

+0

すべての入出力データ型のデータ型は "varchar2"です。 – bgeveritt

関連する問題