【问题标题】:Calling oracle package function with table of varchar2(100) index by binary_integer datatype as a parameter from c# .net使用二进制整数数据类型作为参数的 varchar2(100) 索引表从 c# .net 调用 oracle 包函数
【发布时间】:2014-02-13 19:34:11
【问题描述】:

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

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;

请帮忙。

【问题讨论】:

  • 你的 C# 调用是什么样子的?

标签: c# sql oracle package


【解决方案1】:

我有一个例子,它在 VB.NET 中,但我想你可以把它翻译成 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 2017-05-12
    • 2011-07-28
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多