EF 调用oracle 存储过程
EF是如何调用的存储过程的,本人也是翻遍了个大网站,查阅了很多资料。终于解决了遇到的问题。
第一步:创建存储过程,在这里我就不多说了,不是文章说的重点。
declare
O_VOUCHER_ACT_DEDUCTIONS integer;
O_FREE_NUMBER integer;
O_POINT_ACT_DEDUCTIONS integer;
O_PAYMENTMONEY integer;
O_ERROR_MESSAGE integer;
O_PAYNUM integer;
begin
p_cust_assets(10,710201,1,2,O_VOUCHER_ACT_DEDUCTIONS, O_FREE_NUMBER, O_POINT_ACT_DEDUCTIONS, O_PAYMENTMONEY, O_ERROR_MESSAGE, O_PAYNUM);
dbms_output.put_line(O_VOUCHER_ACT_DEDUCTIONS);
dbms_output.put_line(O_FREE_NUMBER);
dbms_output.put_line(O_POINT_ACT_DEDUCTIONS);
dbms_output.put_line(O_PAYMENTMONEY);
dbms_output.put_line(O_ERROR_MESSAGE);
dbms_output.put_line(O_PAYNUM);
end;
上面执行这个存储过程,是带有输出参数的。
第二步:调用存储过程,并输入参数
public void SelectToDBProcedure()
{
//参数第一种写法:
//OracleParameter vip_con_custom_id = new OracleParameter(":i_vip_con_custom_id", OracleDbType.Int32, 710201, ParameterDirection.Input); //第二种写法:
//OracleParameter[] parameter = new OracleParameter[10];
//parameter[0] = new OracleParameter(":i_vip_con_custom_id", OracleDbType.Int32, 710201, ParameterDirection.Input); //第三种写法:
OracleParameter guest_type = new OracleParameter(":i_guest_type", OracleDbType.Int32);
guest_type.Value = 10;
guest_type.Direction = ParameterDirection.Input; OracleParameter vip_con_custom_id = new OracleParameter(":i_vip_con_custom_id", OracleDbType.Int32);
vip_con_custom_id.Value = 710201;
vip_con_custom_id.Direction = ParameterDirection.Input; OracleParameter ishascustomer = new OracleParameter(":i_ishascustomer", OracleDbType.Int32);
ishascustomer.Value = 1;
ishascustomer.Direction = ParameterDirection.Input; OracleParameter accompany_num = new OracleParameter(":i_accompany_num", OracleDbType.Int32);
accompany_num.Value = 2;
accompany_num.Direction = ParameterDirection.Input; OracleParameter O_VOUCHER_ACT_DEDUCTIONS = new OracleParameter("O_VOUCHER_ACT_DEDUCTIONS",OracleDbType.Int32);
O_VOUCHER_ACT_DEDUCTIONS.OracleDbType = OracleDbType.Int32;
O_VOUCHER_ACT_DEDUCTIONS.Direction = ParameterDirection.Output; OracleParameter O_FREE_NUMBER = new OracleParameter("O_FREE_NUMBER", OracleDbType.Int32);
O_FREE_NUMBER.OracleDbType = OracleDbType.Int32;
O_FREE_NUMBER.Direction = ParameterDirection.Output; OracleParameter O_POINT_ACT_DEDUCTIONS = new OracleParameter("O_POINT_ACT_DEDUCTIONS", OracleDbType.Int32);
O_POINT_ACT_DEDUCTIONS.OracleDbType = OracleDbType.Int32;
O_POINT_ACT_DEDUCTIONS.Direction = ParameterDirection.Output; OracleParameter O_PAYMENTMONEY = new OracleParameter("O_PAYMENTMONEY", OracleDbType.Int32);
O_PAYMENTMONEY.OracleDbType = OracleDbType.Int32;
O_PAYMENTMONEY.Direction = ParameterDirection.Output; OracleParameter O_ERROR_MESSAGE = new OracleParameter("O_ERROR_MESSAGE", OracleDbType.Int32);
O_ERROR_MESSAGE.OracleDbType = OracleDbType.Int32;
O_ERROR_MESSAGE.Direction = ParameterDirection.Output; OracleParameter O_PAYNUM = new OracleParameter("O_PAYNUM", OracleDbType.Int32);
O_PAYNUM.OracleDbType = OracleDbType.Int32;
O_PAYNUM.Direction = ParameterDirection.Output; var query = _db.Database.SqlQuery<CustAssetsModel>("begin p_cust_assets (:i_guest_type,:i_vip_con_custom_id,:i_ishascustomer,:i_accompany_num,:O_VOUCHER_ACT_DEDUCTIONS,:O_FREE_NUMBER,:O_POINT_ACT_DEDUCTIONS,:O_PAYMENTMONEY,:O_ERROR_MESSAGE,:O_PAYNUM); end;",
guest_type, vip_con_custom_id, ishascustomer, accompany_num, O_VOUCHER_ACT_DEDUCTIONS, O_FREE_NUMBER, O_POINT_ACT_DEDUCTIONS, O_PAYMENTMONEY, O_ERROR_MESSAGE, O_PAYNUM); var result = query.ToList(); //打印存储过程 返回参数
Console.WriteLine("执行结果:{0}", O_PAYMENTMONEY.Value);
}
这样就OK了,可以输入返回参数结果值了。当然还有返回结果集的,还有带有多个结果集的存储过程;还处于摸索阶段,请大神指点,谢谢。
EF 调用oracle 存储过程的更多相关文章
- MyBatis调用Oracle存储过程
MyBatis调用Oracle存储过程 1.无输入和输出参数的存储过程 2.带有输入和输出参数的存储过程 3.返回游标的存储过程 mybatis中的配置文件代码 <resultMap type= ...
- Java调用oracle存储过程通过游标返回临时表数据
注:本文来源于 < Java调用oracle存储过程通过游标返回临时表数据 > Java调用oracle存储过程通过游标返回临时表数据 项目开发过程中,不可避免的会用到存储过程返回结 ...
- C#调用Oracle存储过程
C#调用Oracle存储过程的代码如下所示: using System; using System.Collections.Generic; using System.Collections.Obje ...
- C#调用 oracle存储过程
C#调用oracle 存储过程与调用Sql server存储过程类似,比较简单:直接给出示例: /// <summary> /// 判断物料类型是不是总部管控 /// </summa ...
- 123 c#调用oracle存储过程返回数据集 --通过oracle存储过程返回数据集
c#调用oracle存储过程返回数据集 2008-12-20 10:59:57| 分类: net|字号 订阅 CREATE OR REPLACE PACKAGE pkg_tableTypeIS ...
- c#调用oracle存储过程返回数据集
c#调用oracle存储过程返回数据集 2008-12-20 10:59:57| 分类: net|字号 订阅 CREATE OR REPLACE PACKAGE pkg_tableTypeIS ...
- C#调用Oracle存储过程的方法
C#调用Oracle存储过程的方法 准备: 环境:pl/sql+oracle9i+vs2008 创建表test: create table TEST( ID NUMBER,//编号 NA ...
- Oracle创建表语句(Create table)语法详解及示例、、 C# 调用Oracle 存储过程返回数据集 实例
Oracle创建表语句(Create table)语法详解及示例 2010-06-28 13:59:13| 分类: Oracle PL/SQL|字号 订阅 创建表(Create table)语法详解 ...
- python调用oracle存储过程
oracle 存储过程 python调用oracle存储过程 -- 通过cx_Oracle连接 import cx_Oracle # 连接数据库 orcl_engine = 'scott/s123@x ...
随机推荐
- Union Find-547. Friend Circles
There are N students in a class. Some of them are friends, while some are not. Their friendship is t ...
- Graph-684. Redundant Connection
In this problem, a tree is an undirected graph that is connected and has no cycles. The given input ...
- biz_platform项目过程
1.前台界面主要采用React框架.通过Ajax方式将数据与tornado服务器交互.以下代码为请求后台数据. var ThisPage = React.createClass({ render: f ...
- (转)ReentrantLock可重入锁的使用场景
原文: http://my.oschina.net/noahxiao/blog/101558
- Fast Newman-FN算法以及模块度定义介绍
一.社区的定义 Newman第一次提出模块度定义就是在2004年发表的这篇文章“fast algorithm for community structure in networks”,第一次用量化的公 ...
- centos 7 nginx 安装
1.下载nginx rpm包 下载地址:http://nginx.org/packages/mainline/centos/7/x86_64/RPMS/ ,可查看所有安装包 从中如下载: wget h ...
- CentOS6.5下Ambari安装搭建部署大数据集群(图文分五大步详解)(博主强烈推荐)
第一步: Ambari安装之Ambari安装前准备(CentOS6.5)(一) 第二步: Ambari安装之部署本地库(镜像服务器)(二) 第三步: Ambari安装之安装并配置Ambari-serv ...
- Python -- Gui编程 -- Tkinter的使用 -- 基本控件
1.按钮 tkBtton.py import tkinter root = tkinter.Tk() btn1 = tkinter.Button(root, anchor=tkinter.E,\ te ...
- IndexDB的基本操作
1.前端存储的一个数据库. 2.介绍一下基本操作. <!DOCTYPE html> <html> <head> <meta charset="UTF ...
- 不开vip会员照样看vip电影(亲测有效)
此为临时链接,仅用于文章预览,将在短期内失效关闭 不开vip会员照样看vip电影(亲测有效) 2018-03-08 mr_lee Python达人课堂 刚刚测试,真实有效,颇不接待要分享了... 土豪 ...