从oracle过程获取输出参数(类型对象)

时间:2017-05-25 12:56:15

标签: c# oracle stored-procedures

我的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")获取结果来解决此问题,但这也无效。

有什么想法或想法吗?

0 个答案:

没有答案