.net操作Oracle存贮过程

来源:互联网 发布:qq游戏网络断了要等 编辑:程序博客网 时间:2024/06/02 02:00

http://www.microsoft.com/china/MSDN/library/data/dataAccess/DMSDNorsps.mspx?mfr=true

是微软的实例及应用。讲解的不错。
不过其中创建的存储过程需要将new换成Repleace。下面是我做的实例。

1  表结构及数据:

   1           系统功能    0           1
   2           客户中心    1           0
   3           潜在客户    2           0
   4           现在客户    2           1
   5           历史客户    2           1
   6           报表中心    1           1
   7           总公司报表    6           1
   8           中化工报表    7           1
   9           基本情况表    8           1
  10          主要经济    8           1
  11          办公中心    1           1
  12          公文流转    11           1
  13          日程管理    11           1

2 存贮过程:

CREATE OR REPLACE PROCEDURE InfoManager.COUNT_SysFunction
(
    reccount OUT NUMBER
)
IS
BEGIN
    SELECT COUNT(*) INTO reccount
    FROM Infomanager.Sysfunction;
END COUNT_SysFunction;



3  引用Oracle连接 :
using System.Data.OracleClient;

4 代码 :

                      OracleConnection conn 
= new OracleConnection(System.Configuration.ConfigurationManager.AppSettings["DBConnStr"]);
        OracleCommand cmd 
= new OracleCommand();
        cmd.Connection 
= conn;
        cmd.CommandText 
= "COUNT_SysFunction";
        cmd.CommandType 
= CommandType.StoredProcedure;

        cmd.Parameters.Add(
"reccount", OracleType.Number);
        cmd.Parameters[
"reccount"].Direction = ParameterDirection.Output;
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();

        Label1.Text 
= cmd.Parameters["reccount"].Value.ToString();

        conn.Close();




测试通过:
当然还有另外两个例子数据库连接方式参看上面的工程方式连接数据库(http://tb.blog.csdn.net/TrackBack.aspx?PostId=1539106),一个用来更新数据库操作,一个用来显示多参数的传递。

CREATE OR REPLACE PROCEDURE InfoManager.UPD_SYSFUNCTION
(
    func_id char
)
IS
BEGIN
    update infomanager.sysfunction
    set 标志 =
0
    WHERE 功能编号 = func_id;
END UPD_SYSFUNCTION;

 

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

using System.Data.OracleClient;

 

using HHSCInfor.App_Code.Database;

 

public partial class _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        AbsDB conn = DBConn.GetDBConn();

        OracleCommand cmd = new OracleCommand();

        cmd.CommandText = "UPD_SYSFUNCTION";

        OracleParameter para1 = new OracleParameter("func_id", 4);

        OracleParameter[] paraValue ={ para1};

        int resultFlag = conn.ExeSql(CommandType.StoredProcedure, cmd.CommandText, paraValue);

        Label1.Text = resultFlag.ToString();    
    
      
conn.Close();
 

    }  

}

 

CREATE OR REPLACE PROCEDURE UPD_SYSFUNCTION
(
    func_id char,
    flag char
)
IS
BEGIN
    update infomanager.sysfunction
    set 标志 = flag
    WHERE 功能编号 = func_id;
END UPD_SYSFUNCTION;

 

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

using System.Data.OracleClient;

 

using HHSCInfor.App_Code.Database;

 

public partial class _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        AbsDB conn = DBConn.GetDBConn();

        OracleCommand cmd = new OracleCommand();

        cmd.CommandText = "UPD_SYSFUNCTION";

            OracleParameter para1 = new OracleParameter("func_id", 4);

        OracleParameter para2 = new OracleParameter("flag", 1);

        OracleParameter[] paraValue ={ para1, para2 };

        int resultFlag = conn.ExeSql(CommandType.StoredProcedure, cmd.CommandText, paraValue);

        Label1.Text = resultFlag.ToString();

         conn.Close();
   

    }  

    

}

 

原创粉丝点击