0

C# コードでストアド プロシージャを実行し、データグリッドに表示できるように行を返すのに苦労しています。私はサイトを検索し、同じ問題を抱えている他の人を見つけましたが、提案された修正を試みましたが、「呼び出しの引数の数またはタイプが間違っています」というエラーが引き続き発生します。

これは私のストアドプロシージャコードです

create or replace 
PROCEDURE GetData
(
  P_RECS OUT SYS_REFCURSOR,
  P_YEARLIST IN VARCHAR2
)
AS 
BEGIN  
 OPEN P_RECS FOR 
  select desc
  from emp_data
  where trim(SYear) in (P_YEARLIST)
  order by upper(trim(SYear)) asc ;
END GetData ;

これは私のC#コードです

using (OracleCommand cmd = new OracleCommand("GetData", conn))
{
  cmd.CommandType = CommandType.StoredProcedure;

  OracleParameter opRefCur = new OracleParameter();
  opRefCur.ParameterName = "P_RECS";
  opRefCur.OracleDbType = OracleDbType.RefCursor;      
  opRefCur.Direction = ParameterDirection.ReturnValue;

  OracleParameter opYearList = new OracleParameter();
  opYearList.ParameterName = "P_YEARLIST";
  opYearList.OracleDbType = OracleDbType.Varchar2;
  opYearList.Value = '1973';
  opYearList.Direction = ParameterDirection.Input;

  cmd.Parameters.Add(opRefCur);
  cmd.Parameters.Add(opYearList);

  try
  {
    OracleDataReader dr = cmd.ExecuteReader();
  }
  catch (Exception ex)
  {

  }
}

これは、このストアド プロシージャの始まりにすぎません。さらに多くのパラメーターを追加する必要があります。それは単純なものだと確信しており、コードを何度も調べましたが、修正できません。どんな助けでも大歓迎です。

ありがとうございました

4

0 に答える 0