从 C# 调用 oracle 函数
Posted
技术标签:
【中文标题】从 C# 调用 oracle 函数【英文标题】:Call an oracle function from c# 【发布时间】:2016-12-19 10:23:04 【问题描述】:我在 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# 调用函数时会出现错误(无效的 sql 语句),即使函数是正确的并从 oracle 返回输出?有什么帮助吗?建议?
【问题讨论】:
错误是什么? 看看这个:***.com/questions/23199713/… 出现错误...嗯... 问题更新了! 错误是(无效的 SQL 语句),但是函数是从数据库编译并正常工作的 【参考方案1】:您的代码不起作用,因为您使用保留关键字 (select
) 作为字符串的名称,因为编译器认为这是 query expression,所以上面的代码将不起作用。
修复显然很容易,将字符串的名称更改为“select”。
【讨论】:
@alicebon 你是否也改变了 OracleCommand 构造函数的第一个参数?以上是关于从 C# 调用 oracle 函数的主要内容,如果未能解决你的问题,请参考以下文章