首页  ·  知识 ·  云计算
ASP.net中调用oracle数据库中函数的方法
佚名  http://jackyrong.cnblogs.com/  综合  编辑:dezai  图片来源:网络
"entry-body nerr" "DISPLAY: block"> 在ASP.net程序中常常需要调用数据库中存储过程或函数等,调用Oracle数据库存储过程的方法与调用sql

在ASP.net程序中常常需要调用数据库中存储过程或函数等,调用Oracle数据库存储过程的方法与调用sqlServer2000中的存储过程类似。只是.NET只支持oracle数据库包中的存储过程,不支持函数,不能像调用存储过程那样直接调用Oracle的函数。但如果有需要的话还是可以实现的。个人总结了一下,第一种方法是:在Oracle数据库后台,新建一个存储过程,在此存储过程中直接调用你想要调用的函数,函数的返回值传给存储过程中定义的一个变量就可以了。然后在你的.net程序中调用你定义的存储过程就可以了。但这种方法需要修改后台数据库,有时前台开发人员不具有修改数据库的权限,这种方法就显得被动一些了。第二种方法是通过在定义OracleCommand时,指定相应的command Text为: "select 函数名 from dual",当然相应的CommandType 为CommandType.Text,而不是CommandType.StoredProcedure,如果函数有参数,参数与一般的sql语句设置方法是一致的。

以下是一段实例:

 OracleConnection conn = new OracleConnection(DBHelper.conn);
 OracleCommand comm= new OracleCommand("select apps.SGMIS_WHP.GetOrder(:vDJDM,:vDWDM) from dual", conn);//此函建在包中,需要在函数前加包名
        OracleParameter p0 = new OracleParameter("vDJDM", OracleType.VarChar, 20);
        p0.Direction = ParameterDirection.Input;
        p0.Value = vDJDM;
        OracleParameter p1 = new OracleParameter("vDWDM", OracleType.VarChar, 20);
        p1.Direction = ParameterDirection.Input;
        p1.Value = vDWDM;        

        comm.Parameters.Add(p0);
        comm.Parameters.Add(p1);
      
        comm.CommandType = CommandType.Text;
  
        string result;
        try
        {
            if (conn.State == ConnectionState.Closed)
                conn.Open();   
            result = Convert.ToString(comm.ExecuteScalar());
            return result;
        }
        finally
        {
            if (conn.State == ConnectionState.Open)
                conn.Close();
        }

本文作者:佚名 来源:http://jackyrong.cnblogs.com/
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读