C# 코드에서 Oracle에서 PACKAGE.PROCEDURE()를 호출하려고합니다. 이 간단한 예제에서 나는 프로 시저 호출에서 하나 개의 값을 얻을해야하지만, 내가 할 모든 오류입니다 :C# 코드에서 오라클 프로 시저를 호출하는 방법
다음과 같은 절차가 선언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; ' 아이디어가 있으십니까? –