返回dataset oracle,C#中用Oracle 执行存储过程返回DataSet

CREATE OR REPLACE PROCEDURE 你的存储过程名字

(

参数1 参数类型, 参数2 参数类型, ......

V_CS OUT SYS_REFCURSOR -----关键的游标

)

AS

--定义变量......

BEGIN

--数据的处理......

OPEN V_CS FOR SELECT * FROM 你需要查询的表;

RETURN ;

END;

IDbConnection con = this.DBInterface.CreateConnection();//自已定义的数据访问接口

con.Open();

IDbTransaction trans = con.BeginTransaction();

cmd = con.CreateCommand();

cmd.Transaction = trans; //Set Transaction For Command

cmd.CommandType = System.Data.CommandType.StoredProcedure;

cmd.CommandText = "PROC_RAIN_JP";

System.Data.OracleClient.OracleParameter p;

p = new System.Data.OracleClient.OracleParameter("V_STCDS", System.Data.OracleClient.OracleType.VarChar, 2000);

cmd.Parameters.Add(p);

p.Direction = System.Data.ParameterDirection.Input;

p.Value = STC;

p = new System.Data.OracleClient.OracleParameter("V_PTM1", System.Data.OracleClient.OracleType.VarChar, 20);

cmd.Parameters.Add(p);

p.Direction = System.Data.ParameterDirection.Input;

p.Value = this.getParamValue("SDATE");

p = new System.Data.OracleClient.OracleParameter("V_PTM2", System.Data.OracleClient.OracleType.VarChar, 20);

cmd.Parameters.Add(p);

p.Direction = System.Data.ParameterDirection.Input;

p.Value = this.getParamValue("EDATE");

//输出的DataSet

p = new System.Data.OracleClient.OracleParameter("V_CS", System.Data.OracleClient.OracleType.Cursor);

cmd.Parameters.Add(p);

p.Direction = System.Data.ParameterDirection.Output;//设置为Output

DataSet ds = new DataSet();

IDbDataAdapter da = new System.Data.OracleClient.OracleDataAdapter(cmd as System.Data.OracleClient.OracleCommand);

da.Fill(ds);

trans.Commit();

if (con.State != ConnectionState.Closed)

...{

try

...{

con.Close();

}

catch

...{

}

}

return ds.Tables[0];

//自己项目中的代码

IDbConnection con = this.DataManager.DataProvide.GetConnection();

con.Open();

IDbTransaction trans = con.BeginTransaction();

IDbCommand cmd = con.CreateCommand();

cmd.Transaction = trans;

cmd.CommandType = System.Data.CommandType.StoredProcedure;

cmd.CommandText = "p_trans_tj";

OracleParameter p;

p = new OracleParameter("userid", OracleType.VarChar, 2000);

cmd.Parameters.Add(p);

p.Direction = System.Data.ParameterDirection.Input;

p.Value = userid;

p = new OracleParameter("typeid", OracleType.VarChar, 2000);

cmd.Parameters.Add(p);

p.Direction = System.Data.ParameterDirection.Input;

p.Value = typeid;

p = new OracleParameter("years", OracleType.VarChar, 2000);

cmd.Parameters.Add(p);

p.Direction = System.Data.ParameterDirection.Input;

p.Value = years;

p = new OracleParameter("months", OracleType.Float, 2);

cmd.Parameters.Add(p);

p.Direction = System.Data.ParameterDirection.Input;

p.Value = months;

p = new OracleParameter("cur_out", OracleType.Cursor);

cmd.Parameters.Add(p);

p.Direction = System.Data.ParameterDirection.Output;//设置为Output

DataSet ds = new DataSet();                 IDbDataAdapter da = new System.Data.OracleClient.OracleDataAdapter(cmd as System.Data.OracleClient.OracleCommand);                 da.Fill(ds);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# 中连接 Oracle 数据库并查询后,可以将查询结果保存在各种数据结构中,如数组、列表、数据集、数据表等等。以下是一些示例代码: 1. 将查询结果保存在数组中: ```csharp using Oracle.DataAccess.Client; string connString = "Data Source=<Oracle 数据库连接字符串>;User ID=<用户名>;Password=<密码>"; using (OracleConnection conn = new OracleConnection(connString)) { conn.Open(); string sql = "SELECT * FROM <表名> WHERE <条件>"; using (OracleCommand cmd = new OracleCommand(sql, conn)) { using (OracleDataReader reader = cmd.ExecuteReader()) { List<object[]> resultList = new List<object[]>(); while (reader.Read()) { object[] rowValues = new object[reader.FieldCount]; for (int i = 0; i < reader.FieldCount; i++) { rowValues[i] = reader.GetValue(i); } resultList.Add(rowValues); } // 处理查询结果数组 } } } ``` 在上面的代码中,将查询结果保存在 `List<object[]>` 类型的列表中,每行数据都是一个 `object[]` 类型的数组,数组元素为每个字段的值。 2. 将查询结果保存在数据集中: ```csharp using Oracle.DataAccess.Client; using System.Data; string connString = "Data Source=<Oracle 数据库连接字符串>;User ID=<用户名>;Password=<密码>"; using (OracleConnection conn = new OracleConnection(connString)) { conn.Open(); string sql = "SELECT * FROM <表名> WHERE <条件>"; using (OracleDataAdapter adapter = new OracleDataAdapter(sql, conn)) { DataSet dataSet = new DataSet(); adapter.Fill(dataSet); // 处理查询结果数据集 } } ``` 在上面的代码中,将查询结果保存在 `DataSet` 类型的数据集中,数据集包含一个或多个 `DataTable` 类型的数据表,每个数据表对应查询结果的一个结果集。 3. 将查询结果保存在数据表中: ```csharp using Oracle.DataAccess.Client; using System.Data; string connString = "Data Source=<Oracle 数据库连接字符串>;User ID=<用户名>;Password=<密码>"; using (OracleConnection conn = new OracleConnection(connString)) { conn.Open(); string sql = "SELECT * FROM <表名> WHERE <条件>"; using (OracleDataAdapter adapter = new OracleDataAdapter(sql, conn)) { DataTable dataTable = new DataTable(); adapter.Fill(dataTable); // 处理查询结果数据表 } } ``` 在上面的代码中,将查询结果保存在 `DataTable` 类型的数据表中,数据表包含多行多列的查询结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值