C#(在WeBAPI)获取Oracle(在PL/SQL)游标类型的存储过程(用到了RefCursor)
2024-10-19 05:26:54
需求:WebAPI服务端,通过Oracle数据库的存储过程,获取数据。
在PL/SQL 建立存储过程:(先来最简单的,就是把整个表都查出来)
create or replace procedure SQL_WX_SP(out_return out sys_refcursor) is
begin
open out_return for 'select * from wx_sp';
end;
C#代码:(这是调用的方法,out_return 这个是和存储过程中的游标参数对应的,类型是OracleDbType.RefCursor。SQL_WX_SP 是存储过程名称)
public DataTable function()
{
try
{
OracleParameter[] par =
{
new OracleParameter("out_return", OracleDbType.RefCursor)
}; par[].Direction = ParameterDirection.Output; DataTable result = DBConnect.GetInstance().GetDataTable("SQL_WX_SP", CommandType.StoredProcedure, par); return result;
}
catch (Exception ex)
{
throw ex;
}
}
C# DBHelper代码 (没有DBHelper直接把数据库连接字符串加上应该也好使,就是显着有点业余,_ConnStr这个是数据库连接字符串)
internal DataTable GetDataTable(string sql, CommandType commandType, params OracleParameter[] opar)
{
DataTable dt = new DataTable();
using (OracleDataAdapter dap = new OracleDataAdapter(sql, _ConnStr))
{
dap.SelectCommand.Parameters.AddRange(opar);
dap.SelectCommand.CommandType = commandType;
dap.Fill(dt);
}
return dt;
}
这一套整好,跑起来,数据就来了(这里返回的数据类型是DataTable),然后就可以进行处理了。
代码主要是来自:jory大神,感谢!
原文:http://www.cnblogs.com/jory/p/5362877.html
最新文章
- 计算节点宕机了怎么办?- 每天5分钟玩转 OpenStack(43)
- [转]java动态代理(JDK和cglib)
- Adivisor
- TIME_WAIT过多
- storyboard中xib文件不加载问题
- #JAVA操作LDAP
- 排列组合函数next_permutation()
- 点击Textbox 给日历控件赋值
- sqlcmd的使用小结
- 201521123084 《Java程序设计》第6周学习总结
- apache: apache-tomcat-6.0.35完整下载
- c#中的格式输出
- linux三剑客之一grep
- Numpy系列(五)- 复制和视图
- Correction suggestions
- WPF双向数据绑定总结
- Implementing HTTPS Everywhere in ASP.Net MVC application.
- <;9>;cc.Sprite组件
- CF359B Permutation 构造
- 数据仓库基础(十)Informatica 组件1
热门文章
- 使用jprofiler分析dump文件一个实例
- System.IO在不存在的路径下创建文件夹和文件的测试
- 迷茫<;第二篇:回到老家湖南长沙>;
- 在 .NET Core 中结合 HttpClientFactory 使用 Polly(下篇)
- c#, AOP动态代理实现动态权限控制(一)
- Lodop、c-lodop注册与角色简短问答
- Linux下开启和关闭Telnet服务
- CentOS修改SSH端口号和禁止root用户直接登录
- 皮尔逊相关系数(Pearson Correlation Coefficient, Pearson&#39;s r)
- 【XSY3154】入门多项式 高斯消元