0
과 같은 Oracle 형식의 C#에서 저장 프로 시저 호출 Oracle.DataAccess 라이브러리를 사용하여 Oracle 저장 프로 시저를 실행하는 중 C#에서 문제가 발생했습니다.CustomType 테이블
오라클에는이 구조가 있습니다.
CREATE OR REPLACE TYPE O_MOV_STATION_STATUS AS OBJECT
(
StationT NUMBER(10),
StationN NUMBER(10),
Stat NUMBER(3),
Loaded NUMBER(1),
Capacity NUMBER(10),
CurrentCount NUMBER(10),
Box NUMBER(10)
);
프로 시저가 정의 :
PROCEDURE UPDATE_STATIONS(pn_warehouse_id_in IN wms_warehouse.warehouse_id%TYPE,
prl_sta_status_in IN o_mov_lst_sta_status,
pn_error_code_out OUT NUMBER,
pv_error_text_out OUT NOCOPY VARCHAR2);
C에서 # 코드는 다음과 같다 : 일단
public struct O_Mov_Station_Status
{
public decimal StationT;// NUMBER(10),
public decimal StationN;// NUMBER(10),
public decimal Stat;// NUMBER(3),
public decimal Loaded;// NUMBER(1),
public decimal Capacity;// NUMBER(10),
public decimal CurrentCount;// NUMBER(10),
public decimal Box;// NUMBER(10)
}
public struct Lst_O_Mov_Station_Status
{
public IList<O_Mov_Station_Status> Lst_Station_Status;
}
... Initializing vars and objects ...
OracleCommand cmd = new OracleCommand("MyPackage.UPDATE_STATIONS", con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
//Oracle Parameter
OracleParameter objParam = new OracleParameter();
objParam = new OracleParameter("PN_WAREHOUSE_ID_IN", OracleDbType.Decimal);
objParam.Direction = System.Data.ParameterDirection.Input;
objParam.Value = 20000;
cmd.Parameters.Add(objParam);
objParam.Dispose();
objParam = new OracleParameter("prl_sta_status_in", OracleDbType.Object);
objParam.OracleDbType = OracleDbType.Object;
objParam.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
objParam.Direction = System.Data.ParameterDirection.Input;
objParam.UdtTypeName = "O_MOV_STATION_STATUS";
objParam.Value = lSS;
objParam.DbType = System.Data.DbType.Object;
cmd.Parameters.Add(objParam);
objParam.Dispose();
objParam = new OracleParameter("PN_ERROR_CODE_OUT", OracleDbType.Decimal);
objParam.Direction = System.Data.ParameterDirection.Output;
cmd.Parameters.Add(objParam);
objParam.Dispose();
objParam = new OracleParameter("PV_ERROR_TEXT_OUT", OracleDbType.Varchar2);
objParam.Direction = System.Data.ParameterDirection.Output;
cmd.Parameters.Add(objParam);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
다음
CREATE OR REPLACE TYPE O_MOV_LST_STA_STATUS AS TABLE OF O_MOV_STATION_STATUS;o_mov_lst_sta_status
하고 유형 설명한다 나는 ExecuteNonQuery()를 실행한다. 나는 thi를 얻는다. ■ 오류 : OracleParameter.Value가 올바르지 않습니다.
누구나이 목록을 저장 프로 시저의 매개 변수로 보낼 수 있습니까? 내가 필요로하는 목록이
너무 감사 오라클
에서 사용자 정의 유형의 표입니다알 수 있습니다.
감사합니다.