我有一个从C#调用oracle函数的问题。我想知道如何在C#中为Oracle函数定义参数(in和out)。在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;
答案 0 :(得分:0)
对于在您的示例中定义的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 非常重要。