C#コードから、OracleからPACKAGE.PROCEDURE()をコールしようとしています。この単純な例では、私は、プロシージャ・コールから一つの値を取得する必要がありますが、私が得るすべてのエラーです:C#コードからOracleプロシージャを呼び出す方法
wrong number or types of arguments in call to 'RETURN_NUM'
次のように手順が宣言されています。
PROCEDURE return_num(xNum OUT NUMBER) AS
BEGIN
xNum:= 50;
dbms_output.put_line('hello world ' || xNum);
END;
C#コード:
Oraclecon.Open();
OleDbCommand myCMD = new OleDbCommand("TEST.return_num", Oraclecon);
myCMD.CommandType = CommandType.StoredProcedure;
myCMD.Parameters.Add("xNum", OleDbType.Numeric);
OleDbDataReader myReader;
myReader = myCMD.ExecuteReader();
私が間違っていることを指摘できる人もいます。私はそれに近づくことができますどのように
TYPE r_interface_data IS RECORD
(
object_id VARCHAR2(16),
obj_type VARCHAR2(32)
);
TYPE t_interfase_data IS TABLE OF r_interface_data;
:次に、実際のシナリオでは、私のような、カスタムタイプから値のセットを返すプロシージャを呼び出すしたいと思います。ありがとう!
UPDATE:私の特定のケースでは、私が終わったアップ私はあなたがそこまでオフだとは思わない、次のアプローチ
using (OleDbCommand cmd = new OleDbCommand("PACKAGE.procedure_name"))
{
cmd.CommandType = CommandType.StoredProcedure;
SqlManager sqlManager = new SqlManager();
return sqlManager.GetDataSet(cmd);
}
更新: したがって、パラメータの方向をOUT(下のビューコード)に指定すると、自分のコードがコンパイルされます。私はデータを受け取っていません... 'myCMD.Parameters.Add(" xNum "、OleDbType.Numeric).Direction = ParameterDirection.Output; ' アイデアはありますか? –