从C#.net使用由binary_integer数据类型作为参数的varchar2(100)索引表调用Oracle包函数 [英] Calling oracle package function with table of varchar2(100) index by binary_integer datatype as a parameter from c# .net

查看:120
本文介绍了从C#.net使用由binary_integer数据类型作为参数的varchar2(100)索引表调用Oracle包函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在从c#.net调用oracle包函数,但面临以下问题

I am calling a oracle package function from c#.net but facing below issue

Error : ORA-06550: line 1, column 15:
PLS-00306: wrong number or types of arguments in call to 'MYFUNCTION'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

我的功能是:

function Myfunction(lines in t_line, brokerSeq in number, 
                    broker_code_in_file in varchar2, 
                    pb_pv_ind in varchar2)

第一个参数在与

type t_line is table of varchar2(100) index by binary_integer;

请协助.

推荐答案

我有一个示例,该示例在VB.NET中,但是我想您可以将其转换为C#:

I have an example, which is in VB.NET, but I guess you can translate it to C#:

Public Function GetObjects(ByVal lines As String()) As DataTable
   Dim cmd As OracleCommand
   Dim par As OracleParameter
   Dim da As OracleDataAdapter, dt As New DataTable

   cmd = New OracleCommand("BEGIN :res := Myfunction(:lines); END;", server.con)
   cmd.CommandType = CommandType.Text

   ' Return value
   cmd.Parameters.Add("res", OracleDbType.RefCursor, ParameterDirection.ReturnValue)

   par = cmd.Parameters.Add("lines", OracleDbType.Varchar2, ParameterDirection.Input)
   par.CollectionType = OracleCollectionType.PLSQLAssociativeArray
   par.Value = lines
   par.Size = lines.Length
   cmd.ExecuteNonQuery()

   da = New OracleDataAdapter(cmd)
   da.Fill(dt)
   Return dt

End Function

这篇关于从C#.net使用由binary_integer数据类型作为参数的varchar2(100)索引表调用Oracle包函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆