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