从C#调用oracle db函数

时间:2015-08-20 07:21:57

标签: c# oracle

我有一个从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;

1 个答案:

答案 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 非常重要。