0

我正在将一堆代码从 ODP.NET 驱动程序移植到 DevArt dotConnect for Oracle。我遇到了以下不再编译的代码:

OracleParameter parameter = new OracleParameter("state", OracleDbType.Number);
parameter.CollectionType = OracleCollectionType.PLSQLAssociativeArray; //Red Squiggly
parameter.Direction = ParameterDirection.Input;
parameter.Value = State.ToArray();
parameter.Size = State.Count;
command.Parameters.Add(parameter);

它似乎Devart.Data.Oracle.OracleParameter没有 CollectionType 属性。我应该在这里使用什么?

4

1 回答 1

2

这里

Devart.Data.Oracle.OracleParameter没有CollectionType 财产。如果设置 Devart.Data.Oracle.OracleParameter.ArrayLength,则此参数将为 PL/SQL AssociativeArray (PL/SQL Table)。有关详细信息,请参阅 http://www.devart.com/dotconnect/oracle/docs/?PlSqlTable.html

简而言之:只需设置ArrayLength,Devart 就会自动将其视为PLSQLAssociativeArray

因此,您的代码应该是:

OracleParameter parameter = new OracleParameter();
parameter.ParameterName = "state";
parameter.Direction = ParameterDirection.Input;
parameter.OracleDbType = OracleDbType.Number; 
parameter.ArrayLength = State.Count;
parameter.Value = State.ToArray();
command.Parameters.Add(parameter);
于 2011-12-16T22:25:56.823 回答