从c#调用oracle函数

时间:2016-12-19 10:23:05

标签: c# asp.net .net oracle

我在oracle中有一个带有此签名的函数

test_fun(p_nat_no in number,p_number_type in number)  RETURN test_table

在c#中这是代码

string select = "test_fun"; 
using (OracleConnection connection = new OracleConnection(helper.Global.ConnectionString))
{


    OracleCommand command = new OracleCommand(select, connection);
   // command.CommandType = CommandType.StoredProcedure;
    OracleParameter PrmnatNo = new OracleParameter("p_nat_no ", natNo);//natNo
    command.Parameters.Add(PrmnatNo);

    OracleParameter pramNumberType = new OracleParameter("p_number_type ", numberType);
    command.Parameters.Add(pramNumberType);

    connection.Open();

    using (OracleDataReader reader = command.ExecuteReader())
    {

        if (reader.HasRows)
        {

            List<test_table> Tickets = new List<test_table>();

            while (reader.Read())
            {
                Tickets.Add(GetPropertyTaxHelper(reader));

            }
            return Tickets;

        }
        else return null;
    }

}

注意:该功能在oracle中正常工作。

但是当尝试从c#调用该函数时,出现错误(invalide sql语句),即使该函数是正确的并从oracle返回输出?任何帮助?建议?

1 个答案:

答案 0 :(得分:0)

您的代码不起作用,因为您使用保留关键字(select)作为字符串的名称,因为编译器认为这是query expression,上面的代码不会起作用。

修复显然很简单,更改名为&#34的字符串的名称;选择&#34;。