C#调用Oracle存储过程的方法

准备:

环境:pl/sql+oracle9i+vs2008

创建表test:

create table TEST
(
  ID      NUMBER,//编号
  NAME    VARCHAR2(10),//姓名
  SEX     VARCHAR2(2),//性别
  AGE     NUMBER,//年龄
  ADDRESS VARCHAR2(200)//住址
)

1.执行不带参数的Oracle存储过程:

首先编写一个不带参数的oracle存储过程:

create or replace procedure proc1
is
begin  insert into test(ID,name,sex,age) values(1,'liheng','男',25);
commit;//记得写上这段事务提交语句
end;

C#调用代码如下:

OracleConnection conn = new OracleConnection("server=cw;uid=ls0019999;pwd=aaaaaa");
            conn.Open();
            OracleCommand cmd = conn.CreateCommand();
            cmd.CommandType = CommandType.StoredProcedure;//指明是执行存储过程
            cmd.CommandText = "proc1";
            cmd.ExecuteNonQuery();
            conn.Close();

2.执行输入类型参数的存储过程:

首先编写一个输入类型参数的存储过程:

create or replace procedure proc2
(
v_id number,
v_name varchar2
)
is
begin
insert into test(id,name) values(v_id,v_name);
commit;
end;

C#调用代码如下:

//在传入参数的过程中,我用了两个文本框来接受用户输入的参数,并且做了个简单的校验

if (string.IsNullOrEmpty(this.textBox1.Text))
            {
                MessageBox.Show("编号不能为空!");
                this.textBox1.Focus();
                return;
            }
            if (string.IsNullOrEmpty(this.textBox2.Text))
            {
                MessageBox.Show("姓名不能为空!");
                this.textBox2.Focus();
                return;
            }
            OracleConnection conn = new OracleConnection("server=cw;uid=ls0019999;pwd=aaaaaa");
            conn.Open();
            OracleCommand cmd = conn.CreateCommand();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "proc2";
            cmd.Parameters.Add("v_id", OracleType.Number).Direction = ParameterDirection.Input;//指明传入的参数是输入给oracle存储过程用的
            cmd.Parameters["v_id"].Value =this.textBox1.Text.Trim();
            cmd.Parameters.Add("v_name",OracleType.NVarChar).Direction = ParameterDirection.Input;//指明传入的参数是输入给oracle存储过程用的
            cmd.Parameters["v_name"].Value =this.textBox2.Text.Trim();
            cmd.ExecuteNonQuery();
            conn.Close();

3. 执行输出类型参数的存储过程:

首先编写一个输出类型的存储过程:

create or replace procedure proc3
(
reccount out number
)
is
begin
select count(*) into reccount  from test;
end;

这段存储过程的意思求表中记录总数

C#调用代码如下:

OracleConnection conn = new OracleConnection("server=cw;uid=ls0019999;pwd=aaaaaa");
            conn.Open();
            OracleCommand cmd = conn.CreateCommand();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "proc3";
            cmd.Parameters.Add("reccount",OracleType.Number).Direction = ParameterDirection.Output;
            cmd.ExecuteNonQuery();

//这里我用了一个文本框来接受执行存储过程之后返回的参数值
            this.textBox3.Text=cmd.Parameters["reccount"].Value.ToString();

总结:

以上代码都成功运行,可以照我这个进行扩展延伸,道理都是一样的,结果是不同的。

C#调用Oracle存储过程的方法的更多相关文章

  1. MyBatis调用Oracle存储过程

    MyBatis调用Oracle存储过程 1.无输入和输出参数的存储过程 2.带有输入和输出参数的存储过程 3.返回游标的存储过程 mybatis中的配置文件代码 <resultMap type= ...

  2. 123 c#调用oracle存储过程返回数据集 --通过oracle存储过程返回数据集

    c#调用oracle存储过程返回数据集 2008-12-20 10:59:57|  分类: net|字号 订阅   CREATE OR REPLACE PACKAGE pkg_tableTypeIS  ...

  3. Java调用oracle存储过程通过游标返回临时表数据

    注:本文来源于 <  Java调用oracle存储过程通过游标返回临时表数据   > Java调用oracle存储过程通过游标返回临时表数据 项目开发过程中,不可避免的会用到存储过程返回结 ...

  4. C#调用Oracle存储过程

    C#调用Oracle存储过程的代码如下所示: using System; using System.Collections.Generic; using System.Collections.Obje ...

  5. C#调用 oracle存储过程

    C#调用oracle 存储过程与调用Sql server存储过程类似,比较简单:直接给出示例: /// <summary> /// 判断物料类型是不是总部管控 /// </summa ...

  6. c#调用oracle存储过程返回数据集

    c#调用oracle存储过程返回数据集 2008-12-20 10:59:57|  分类: net|字号 订阅   CREATE OR REPLACE PACKAGE pkg_tableTypeIS  ...

  7. Oracle创建表语句(Create table)语法详解及示例、、 C# 调用Oracle 存储过程返回数据集 实例

    Oracle创建表语句(Create table)语法详解及示例 2010-06-28 13:59:13|  分类: Oracle PL/SQL|字号 订阅 创建表(Create table)语法详解 ...

  8. python调用oracle存储过程

    oracle 存储过程 python调用oracle存储过程 -- 通过cx_Oracle连接 import cx_Oracle # 连接数据库 orcl_engine = 'scott/s123@x ...

  9. 用java 调用oracle存储过程总结

    SSM-Mybatis调用Oracle存储过程返回结果集(游标)示例 https://www.jianshu.com/p/0ae6d9d66d61 用java调用oracle存储过程总结 //1.ca ...

随机推荐

  1. NOIP专题复习2 图论-生成树

    目录 一.知识概述 二.典型例题 1.口袋的天空 三.算法分析 (一)Prim算法 (二)Kruskal 四.算法应用 1.[NOIP2013]货车运输 五.算法拓展 1977: [BeiJing20 ...

  2. Python 函数对象-函数嵌套-名称空间与作用域-闭包函数

    今日内容: 1. 函数对象 函数是第一类对象: 指的是函数名指向的值可以被当中数据去使用 1.可以被引用 2.可以当做参数传给另一个函数 3.可以当做一个函数的返回值 4.可以当做容器类型的元素 2. ...

  3. 通过更改scrapy源码进行spider分发实现一个综合爬虫

    最近我正写一个项目,项目的需求如下一,要爬取大约100种几百个网页的类容,并且这些网页的爬取频率不一样,有些一天爬取一次,有些一周爬取一次,二,网页爬取内容有变化,也就是说要爬取的内容会根据需求进行改 ...

  4. (蓝桥杯)2018JAVA B组 日志分析

    日志统计 小明维护着一个程序员论坛.现在他收集了一份"点赞"日志,日志共有N行.其中每一行的格式是: ts id 表示在ts时刻编号id的帖子收到一个"赞". ...

  5. form 表单onclick事件 禁止表单form提交

    最近遇到一次处理form数据的过滤,采用了button的onclick事件来检查,发现return false后表单仍然提交了. 于是仔细研究了下onclick.onsubmit.submit集合函数 ...

  6. [bzoj3531][Sdoi2014][旅行] (主席树+树链剖分)

    Description S国有N个城市,编号从1到N.城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市.每个城市信仰不同的宗教,如飞天面条神教.隐形独角兽教.绝地教都是常见的信仰. ...

  7. xtu summer individual 6 F - Water Tree

    Water Tree Time Limit: 4000ms Memory Limit: 262144KB This problem will be judged on CodeForces. Orig ...

  8. MVC系统学习5——验证

    其实关于Mvc的验证在上一篇已经有讲过一些了,可以通过在我们定义的Model上面添加相应的System.ComponentModel.DataAnnotations空间下的验证属性.在服务器端通过Mo ...

  9. 使用mysql-proxy 快速实现mysql 集群 读写分离

    目前较为常见的mysql读写分离分为两种: 1. 基于程序代码内部实现:在代码中对select操作分发到从库:其它操作由主库执行:这类方法也是目前生产环境应用最广泛,知名的如DISCUZ X2.优点是 ...

  10. [luoguP2827] 蚯蚓(堆?队列!)

    传送门 35分做法 用堆来取最大值,暴力更新其余数的值. 65~85分做法 还是用堆来取最大值,其余的数增加可以变成新切开的两个数减少,最后统一加上一个数. #include <queue> ...