月耳思进

人生在世如身处荆棘之中,心不动,人不妄动,不动则不伤;如心动则人妄动,伤其身痛其骨,于是体会到世间诸般痛苦。
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

ASP.NET使用Oralce过程/函数(一)

Posted on 2006-02-14 16:52  Xfan  阅读(373)  评论(0编辑  收藏  举报


前期准备
create table mistest
(
id number not null,
name varchar2(200),
password varchar2(255),
constraint PK_mistest primary key(id)
);

create sequence SEQ_mistest_id
increment by 1
start with 1
maxvalue 999999;

create or replace trigger TR_mistest_insert
before insert on mistest
for each row
declare
m_seq number;
begin
select SEQ_mistest_id.nextval into m_seq from dual;
:new.id:=m_seq;
end;

有输入,有返回结果集

CREATE OR REPLACE PACKAGE SELECT_SINGLE AS
TYPE T_CURSOR IS REF CURSOR;
PROCEDURE GetById
(
    p_id IN NUMBER,
    cur_Single OUT T_CURSOR
);
END SELECT_SINGLE;

CREATE OR REPLACE PACKAGE BODY SELECT_SINGLE AS
PROCEDURE GetById
(
    p_id IN NUMBER,
    cur_Single OUT T_CURSOR
)
IS
BEGIN
    OPEN cur_Single FOR
    SELECT * FROM mistest
        WHERE id = p_id;

END GetById;
END SELECT_SINGLE;

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.OracleClient;
namespace MisTest
{
    
/// <summary>
    
/// WebForm4 的摘要说明。
    
/// </summary>

    public class WebForm4 : System.Web.UI.Page
    
{
        
protected System.Web.UI.WebControls.DataGrid DataGrid1;
    
        
private void Page_Load(object sender, System.EventArgs e)
        
{
          OracleParameter[] parameters
= 
         
{
          
new OracleParameter("cur_Single", OracleType.Cursor, 2000, ParameterDirection.Output, true00"",
                                              DataRowVersion.Default, Convert.DBNull),
          
new OracleParameter("p_id", OracleType.Int32)
         }
;
        parameters[
1].Value = 1;
        
string connectionString = "Data Source=oracle9i;User ID=hucong;Password=hucong";
        
string queryString = "SELECT_SINGLE.GetById";
        OracleConnection cn 
= new OracleConnection(connectionString);
        OracleCommand cmd 
= new OracleCommand(queryString,cn);
        cmd.CommandType 
= CommandType.StoredProcedure;
        
foreach(OracleParameter parameter in parameters)
        
{
            cmd.Parameters.Add( parameter );
        }


        cn.Open();
        OracleDataReader dr 
= cmd.ExecuteReader();
        
while(dr.Read())
        
{
            
for(int i = 0; i < dr.FieldCount; i++)//获取当前行中的列数
                Response.Write(dr[i].ToString() + ";");
            
        }

        cn.Close();

        }


        
Web 窗体设计器生成的代码
    }

}