table of numbers
의 사용자 지정 데이터 형식을 매개 변수 중 하나로 사용하는 프로 시저를 호출하려고합니다.프로 시저 매개 변수의 Oracle UDT에 대한 바인딩이 잘못되었습니다.
create type num_list as table of number;
그리고 절차의 정의 : : 여기
이 유형의 정의는 다음과 같이create or replace procedure my_procedure
(listofnumbers num_list,
v_value char)
is
begin
update my_table
set my_column = v_value
where my_row_id in (select column_value
from table(listofnumbers));
end;
는 ODP.NET 및 C#을 사용하여, 나는 그것을 선언하고 있습니다 :
var row_ids = new int[] { 1, 2 };
using (var oracleConn = new Oracle.DataAccess.Client.OracleConnection(myConnectionString))
{
oracleConn.Open();
var cmd = new Oracle.DataAccess.Client.OracleCommand("my_procedure", oracleConn);
cmd.CommandType = CommandType.StoredProcedure;
var param1 = new Oracle.DataAccess.Client.OracleParameter("listofnumbers", Oracle.DataAccess.Client.OracleDbType.Array, ParameterDirection.Input);
param1.CollectionType = Oracle.DataAccess.Client.OracleCollectionType.PLSQLAssociativeArray;
param1.UdtTypeName = "num_list";
param1.Value = row_ids;
cmd.Parameters.Add(param1);
var param2 = new Oracle.DataAccess.Client.OracleParameter("v_value ", Oracle.DataAccess.Client.OracleDbType.Char, ParameterDirection.Input);
param2.Value = "Y";
cmd.Parameters.Add(param2);
cmd.ExecuteNonQuery();
}
throw되는 예외 상태 :
잘못된 매개 변수 바인딩 매개 변수 이름 : listofnumbers
속성 내가 매개 변수를 정의 실종 무엇
?
안녕하세요, 어떻게 해결하셨습니까? 아래 답변은 저에게 효과적이지 않았습니다. – Jason
수정 된 답변에 게시 된 링크에서 제공되는 솔루션을 사용해보십시오. –
추신 : 나에게 적합한 대답은 다음과 같습니다. UdtTypeName을 설정하지 말고 대신 CollectionType을 사용하십시오. –