从c#调用oracle数据库函数
本文关键字:数据库 库函数 数据 oracle 调用 | 更新日期: 2023-09-27 18:08:55
我有一个从c#调用oracle函数的问题。我想知道如何在c#中为Oracle函数定义参数(内外)。在Oracle中,函数参数的定义如下。我在Oracle函数中定义参数的方式是否存在错误。我很感激任何人的帮助。
create or replace FUNCTION
"IS_GEC_AVAILABLE" (policyNo IN varchar2,startDate in number,EndDate in number)
return number
as
isGECMemberCount number :=0;
....
begin
.....
.....
return isGECMemberCount;
EXCEPTION
when others then
return 0;
end;
对于像你的例子那样定义的Oracle函数,c#语法是有效的:
using Oracle.DataAccess.Client;
...
OracleConnection con = new OracleConnection(connectionString);
con.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = con;
cmd.CommandText = "IS_GEC_AVAILABLE";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("result", OracleDbType.Decimal, 0, ParameterDirection.ReturnValue);
cmd.Parameters.Add("policyNo", OracleDbType.Varchar2, 1, "X", ParameterDirection.Input);
cmd.Parameters.Add("startDate", OracleDbType.Decimal, 0, ParameterDirection.Input);
cmd.Parameters.Add("EndDate", OracleDbType.Decimal, 0, ParameterDirection.Input);
cmd.ExecuteNonQuery();
Console.WriteLine("result: " + cmd.Parameters[0].Value);
con.Close();
首先定义返回的参数或添加cmd.BindByName = true;
是很重要的。对于varchar2参数,正确定义size也很重要。