专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » Oracle中定义了一存储过程 »正文

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条 分0页

发表评论

  • 昵称:
  • 内容: