我的oracle数据库中有一个自定义Type
:
CREATE OR REPLACE TYPE MYTABLE2 AS object
(
a varchar(20), b number, c varchar(20),
CONSTRUCTOR FUNCTION MYTABLE2 RETURN SELF AS RESULT
)
以及以下程序:
create or replace PROCEDURE COUNT_proc (agein in number, count1 out MYTABLE2) AS
BEGIN
count1 := MYTABLE2('',10,'');
SELECT NAME , AGE ,OCCUPATION
INTO count1.a, count1.b, count1.c
FROM TABLE1 where occupation = 'dev';
END COUNT_proc;
我正在尝试使用c#执行该过程,其代码如下:
var connectionString = @"myconnectionString";
using (var connection = new OleDbConnection(connectionString))
{
connection.Open();
using (var command = new OleDbCommand("COUNT_proc", connection))
{
var parameterIn = command.CreateParameter();
parameterIn.ParameterName = "@in";
parameterIn.Direction = ParameterDirection.Input;
parameterIn.DbType = DbType.Int32;
parameterIn.Value = 20;
command.Parameters.Add(parameterIn);
command.CommandType = CommandType.StoredProcedure;
var parameter = command.CreateParameter();
parameter.ParameterName = "@count1";
parameter.Direction = ParameterDirection.Output;
parameter.DbType = DbType.???; //used object string etc
parameter.Size = 20;
command.Parameters.Add(parameter);
//command.ExecuteNonQuery();
//Console.WriteLine(parameter.Value);
}
}
}
问题是这会在executeNonQuery(我也使用了executeScalar和reader)上抛出一个错误,它没有其他信息消息,也没有ORA错误代码。当我使用DBType.Object时,我得到了这个例外:系统.Data.OleDb.OleDbException - > Ť\ u001d \ u001c
我还尝试使用oleDbAdapter
并尝试使用Fill(dataTable, "@outputParam")
获取结果来解决此问题,但这也无效。
有什么想法或想法吗?