1

私はオラクルが初めてです。テーブル データをフェッチするストアド プロシージャを作成しました。

create or replace
procedure GETLATESTNEWS(cv_results in out sys_refcursor)
as
begin
open cv_results for
select news from tbl_newsdetails;
EXCEPTION
 WHEN OTHERS THEN
  ROLLBACK;
  RAISE_APPLICATION_ERROR(-99999,'Not Inserted due to :'||SQLERRM);  
end;

プロシージャは正常にコンパイルされました。しかし、私の.netコードではエラーが発生しています

ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'GETLATESTNEWS'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

私の.netコードは

con.ConnectionString = constring;
con.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = con;
cmd.CommandText = "GETLATESTNEWS";
cmd.CommandType = CommandType.StoredProcedure;
rdr = cmd.ExecuteReader();

問題は何ですか?挿入ストアドプロシージャで挿入できます。しかし、選択は機能していません。

4

2 に答える 2

1

追加してみてください:

cmd.Parameters.Add("cv_results", OracleDbType.RefCursor).Direction = ParameterDirection.Output;
于 2012-10-08T08:33:50.237 に答える
0

私はこれを使用しました、そしてそれは私のために働いています

OracleCommand oraCommand = new OracleCommand();
oraCommand.Connection = oraConnection;
oraCommand.CommandType = CommandType.StoredProcedure;
oraCommand.CommandText = "procedurename";
OracleParameter oraParameter = new OracleParameter(":result", OracleDbType.RefCursor, ParameterDirection.ReturnValue);
oraCommand.Parameters.Add(oraParameter);
oraCommand.ExecuteNonQuery();

OracleDataAdapter oraDataAdapter = new OracleDataAdapter(oraCommand);
Oracle.DataAccess.Types.OracleRefCursor refCursor = (Oracle.DataAccess.Types.OracleRefCursor)oraParameter.Value;
OracleDataReader reader = refCursor.GetDataReader();

ただし、ストアド プロシージャを ref_cursor として返す場合。

于 2012-10-08T09:09:13.663 に答える