我正在使用带有输出参数的c#的Oracle过程,我正在创建这种方式:
commandUpdate.Parameters.Add(new OracleParameter
{
Direction = ParameterDirection.Output,
ParameterName = "NAME",
OracleDbType = OracleDbType.Varchar2,
CollectionType = OracleCollectionType.PLSQLAssociativeArray,
});
commandUpdate.Parameters["NAME"].Size = Size;
commandUpdate.Parameters["NAME"].ArrayBindSize = new int[Size];
for (int i = 0; i < Size; i++)
{
commandUpdate.Parameters["NAME"].ArrayBindSize[i] = 30;
}
然后,在调用commandUpdate.ExecuteNonQuery()
之后我试图将它转换为字符串数组:
string[] names = (string[])(commandUpdate.Parameters["NAME"].Value);
这给我带来了错误System.InvalidCastException
。
我试图以某种方式使用ToString()
,但似乎它对数组不起作用。
那么如何将此结果转换为字符串数组呢?
答案 0 :(得分:0)
尝试创建一个OracleString变量,该变量将是一个从数组中一次保存一个元素的变量。假设此变量将被称为oraStringVar
。
通过以下方式为其指定值:
oraStringVar = someListVar[index].Value;
然后,您可以通过执行以下内容来提取所需内容:
string container = oraStringVar.Value
注意Value
的双倍使用。同样适用于将clob提取为字符串。
答案 1 :(得分:0)
以下是解决方案:
OracleString[] namesOra = (OracleString[])(commandUpdate.Parameters["NAME"].Value);
names = namesOra.Select(os => os.IsNull ? null : os.Value).ToArray();