按网上说的做的一例子:
C#部分:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
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;public partial class CallProcedure : System.Web.UI.Page
{
public string bmsOracleUser = "test_user";
public string bmsOracleConnectionString = "Data Source=test;user id=test_user;password=test_user"; protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataSet ds = new DataSet();
ds = Bill_Point_No(44);
if (ds.Tables.Count > 0)
{
GridView1.DataSource = ds;
GridView1.DataBind();
}
else
{
Response.Write("Unable to connect to the database");
}
}
} public DataSet Bill_Point_No(int CUSTOMER_ID)
{
DataSet dataset = new DataSet();
Hashtable HT = new Hashtable();
HT.Add("P_CUSTOMER_ID", CUSTOMER_ID);
if (RunProcedure("Re_CURSOR", OracleType.Cursor, ref dataset, HT, bmsOracleUser + ".YY_PKG_BILL_POINT_NO.BILL_POINT_NO", bmsOracleConnectionString))
{
;
}
else
{
dataset = null;
}
return dataset;
} public bool RunProcedure(string ReturnParameter, OracleType ParamType, ref DataSet Dataset, Hashtable HT, string ProcedureName, string OracleConnection)
{
OracleConnection dsConnection = new OracleConnection(OracleConnection);
OracleCommand daCommand = new OracleCommand(ProcedureName, dsConnection);
daCommand.CommandType = CommandType.StoredProcedure;
IDictionaryEnumerator Enumerator;
Enumerator = HT.GetEnumerator();
object Value = null;
OracleParameter OracleParam;
OracleParam = daCommand.Parameters.Add(new OracleParameter(ReturnParameter, ParamType));
OracleParam.Direction = ParameterDirection.Output;
while(Enumerator.MoveNext())
{
Value = Enumerator.Value;
OracleParam = daCommand.Parameters.Add(new OracleParameter(Enumerator.Key.ToString(),Value));
}
OracleDataAdapter ODAdapter = new OracleDataAdapter(daCommand);
try
{
ODAdapter.Fill(Dataset);
return true;
}
catch(Exception e)
{
e.ToString();
return false;
}
finally
{
HT.Clear();
daCommand.Parameters.Clear();
dsConnection.Close();
}
}
}oracle部分:
1.表结构
CREATE TABLE BILL_POINTS
(
POINTS_ID NUMBER(10) NOT NULL,
CUSTOMER_ID NUMBER(10) NOT NULL,
BILL_POINT_NO NUMBER(2) DEFAULT 1 NOT NULL
)CREATE UNIQUE INDEX PK_BILL_POINTS ON BILL_POINTS
(POINTS_ID);
ALTER TABLE BILL_POINTS ADD (
CONSTRAINT PK_BILL_POINTS
PRIMARY KEY
(POINTS_ID));2.创建包:
CREATE OR REPLACE PACKAGE yy_pkg_bill_point_no /*取得用户的所有计费点序号*/
IS
TYPE t_cursor IS REF CURSOR; PROCEDURE bill_point_no (
p_customer_id bill_points.customer_id%TYPE,
re_cursor OUT t_cursor
);
END;
/
CREATE OR REPLACE PACKAGE BODY yy_pkg_bill_point_no
/*取得用户的所有计费电序号*/
IS
PROCEDURE bill_point_no (
p_customer_id bill_points.customer_id%TYPE,
re_cursor OUT t_cursor
)
IS
v_cursor t_cursor;
SQL_ERROR VARCHAR2(100);
BEGIN
OPEN v_cursor FOR
SELECT bill_point_no
FROM bill_points
WHERE customer_id = p_customer_id; re_cursor := v_cursor;
EXCEPTION
WHEN OTHERS
NULL;
END;
END;
/
C#部分:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
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;public partial class CallProcedure : System.Web.UI.Page
{
public string bmsOracleUser = "test_user";
public string bmsOracleConnectionString = "Data Source=test;user id=test_user;password=test_user"; protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataSet ds = new DataSet();
ds = Bill_Point_No(44);
if (ds.Tables.Count > 0)
{
GridView1.DataSource = ds;
GridView1.DataBind();
}
else
{
Response.Write("Unable to connect to the database");
}
}
} public DataSet Bill_Point_No(int CUSTOMER_ID)
{
DataSet dataset = new DataSet();
Hashtable HT = new Hashtable();
HT.Add("P_CUSTOMER_ID", CUSTOMER_ID);
if (RunProcedure("Re_CURSOR", OracleType.Cursor, ref dataset, HT, bmsOracleUser + ".YY_PKG_BILL_POINT_NO.BILL_POINT_NO", bmsOracleConnectionString))
{
;
}
else
{
dataset = null;
}
return dataset;
} public bool RunProcedure(string ReturnParameter, OracleType ParamType, ref DataSet Dataset, Hashtable HT, string ProcedureName, string OracleConnection)
{
OracleConnection dsConnection = new OracleConnection(OracleConnection);
OracleCommand daCommand = new OracleCommand(ProcedureName, dsConnection);
daCommand.CommandType = CommandType.StoredProcedure;
IDictionaryEnumerator Enumerator;
Enumerator = HT.GetEnumerator();
object Value = null;
OracleParameter OracleParam;
OracleParam = daCommand.Parameters.Add(new OracleParameter(ReturnParameter, ParamType));
OracleParam.Direction = ParameterDirection.Output;
while(Enumerator.MoveNext())
{
Value = Enumerator.Value;
OracleParam = daCommand.Parameters.Add(new OracleParameter(Enumerator.Key.ToString(),Value));
}
OracleDataAdapter ODAdapter = new OracleDataAdapter(daCommand);
try
{
ODAdapter.Fill(Dataset);
return true;
}
catch(Exception e)
{
e.ToString();
return false;
}
finally
{
HT.Clear();
daCommand.Parameters.Clear();
dsConnection.Close();
}
}
}oracle部分:
1.表结构
CREATE TABLE BILL_POINTS
(
POINTS_ID NUMBER(10) NOT NULL,
CUSTOMER_ID NUMBER(10) NOT NULL,
BILL_POINT_NO NUMBER(2) DEFAULT 1 NOT NULL
)CREATE UNIQUE INDEX PK_BILL_POINTS ON BILL_POINTS
(POINTS_ID);
ALTER TABLE BILL_POINTS ADD (
CONSTRAINT PK_BILL_POINTS
PRIMARY KEY
(POINTS_ID));2.创建包:
CREATE OR REPLACE PACKAGE yy_pkg_bill_point_no /*取得用户的所有计费点序号*/
IS
TYPE t_cursor IS REF CURSOR; PROCEDURE bill_point_no (
p_customer_id bill_points.customer_id%TYPE,
re_cursor OUT t_cursor
);
END;
/
CREATE OR REPLACE PACKAGE BODY yy_pkg_bill_point_no
/*取得用户的所有计费电序号*/
IS
PROCEDURE bill_point_no (
p_customer_id bill_points.customer_id%TYPE,
re_cursor OUT t_cursor
)
IS
v_cursor t_cursor;
SQL_ERROR VARCHAR2(100);
BEGIN
OPEN v_cursor FOR
SELECT bill_point_no
FROM bill_points
WHERE customer_id = p_customer_id; re_cursor := v_cursor;
EXCEPTION
WHEN OTHERS
NULL;
END;
END;
/
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货