从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;

从c#调用oracle数据库函数

对于像你的例子那样定义的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也很重要。