Oracle中定义了一存储过程来源: 发布时间:星期三, 2008年10月22日 浏览:13次 评论:0
独立服务器出租400/月,有网通,电信,双线 | 黑客培训活动 | 十年专业防黑客团队 | 20G防ddos | 独家推出免杀空间 | 合租空间240元/1G 010-87003500 首页 本类
如何接收Oracle存储过程返回的结果集?(C#或VB.NET) 我在Oracle中定义了一存储过程,返回一个结果集,如: create or replace package pk1 is type rc is ref cursor; procedure pk_p1 (v_REID varchar2,dvT_rc out rc); end; 该存储过程(略)在Oracle中调试通过,但我无法用C#或VB.NET调用(我用的是OleDB) 我看了一些文章说用OracleClient,但我.Net环境中没有OracleClient,如何才能使用? 我的程序中: myCommand.CommandText = "pk1.pk_p1" myCommand.CommandType = CommandType.StoredProcedure myCommand.Parameters.Add("@v1", OleDb.OleDbType.VarChar).Value = str1 Dim myRS As OleDb.OleDbDataReader myRS = myCommand.ExecuteReader() 错:说参数个数不对。。。 不使用oraclehelper类,http://blog.csdn.net/gztoby/archive/2004/10/19/142286.aspx 使用oraclehelper类,http://community.csdn.net/Expert/topic/3912/3912516.xml?temp=.6948206 可我用的是OleDB,不是OracleClient啊,所以没有OracleType.Cursor类型的返回值,我怎么在OleDB中定义一个结果集的参数类型作为返回值呢? 应该可以吧 ! 楼主你确定不行 ? 呵呵,帮你顶 to wh8254(为了俺老婆,努力写程序) 你是说什么应该可以? OleDB应该可以接收返回的结果集?能给个例子吗? to wu896222(wu896222) oraclehelper?是什么样的东西?能作个简单的介绍吗? 用Package是可以得到的 to tianzhijian(天之剑) 你说的是存储过程吗?我的存储过程的确是在包中的,主要是返回了结果集,其他的参数都能解决,就是无法得到结果集,更无法传入结果集(以前有个存储过程中有一输入参数为一光标,就是因为无法传入,所以后来只有修改输入参数,到现在我也不知道怎么传送结果集到存储过程中,郁闷~~~) /*********** 存储过程--返回数据集 ****************************** * *CREATE OR REPLACE PACKAGE TestProc AS TYPE refCursorxx IS REF CURSOR; *PROCEDURE ReturnDataSet(para OUT refCursorxx); *END; * *CREATE OR REPLACE PACKAGE BODY Testproc AS *PROCEDURE ReturnDataSet(para OUT refCursorxx) IS *BEGIN *OPEN para FOR SELECT * FROM ROLLPLAN; *END ReturnDataSet; *END; * *****************************************************************************/ /// <summary> /// 通过存储过程返回查询表的信息 /// </summary> /// <param name="sprocName">存储过程名称</param> /// <returns>DataTable</returns> protected DataTable GetTable(string sprocName) { conn.Open(); try { mycm.CommandText = sprocName; mycm.CommandType = CommandType.StoredProcedure; mycm.Parameters.Add(new OracleParameter("para", OracleType.Cursor)).Direction = ParameterDirection.Output; myda.SelectCommand = mycm; myda.Fill(myds); } catch(Exception ex) { throw ex; } finally { //无论语句执行正确与否,都关闭连接释放资源 conn.Close(); } return myds.Tables[0]; } .Net环境中没有OracleClient 是 VS2003 就有 2002 可以到ms 网站搞到 用oledb 必须用Oracle 带的那个 连接串如下,你应该可以看懂 Provider=OraOLEDB.Oracle;Data Source=Ora9i1;User ID=username;Password=pass;PLSQLRSet=1; PLSQLRSet=1 必 0
相关文章读者评论
发表评论 |