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. 最详细的JavaWeb开发基础之java环境搭建(Mac版)

    阅读文本大概需要 5 分钟. 我之前分享过在 Windows 下面配置 Java 环境,这次给大家带来的是 Mac 下面安装配置 Java 环境.首先 Mac 系统已经带有默认的 Java,但是由于使 ...

  2. 关于java post get请求Demo (请求c#iis接口)

    废话不多说,直接上代码 package dxq.httpGetDemo; import java.io.ByteArrayOutputStream; import java.io.InputStrea ...

  3. xtu summer individual 6 F - Water Tree

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

  4. 60. Spring Boot写后感【从零开始学Spring Boot】

    从2016年4月15日到2016年7月20日经历长达3个月的时间,[从零开始学习Spring Boot]系列就要告一段落了.国内的各种资源都比较乱或者是copy 来copy去的,错了也不加以修正下,导 ...

  5. C++ stringstream的用法

    Created at    stringstream的用法 使用stringstream对象简化类型转换 C++标准库中的<sstream>提供了比ANSI C的<stdio.h&g ...

  6. ORACLE RAC with NFS install

    第一步:建立第一台节点机1).拷贝一台虚拟机做第一个节点,增加host-only的网卡 kudzu工具识别网卡(两都host-only是可以的).然后以下步骤修改相应的配置.etc/hosts内容如下 ...

  7. docsearch & algolia

    docsearch & algolia The easiest way to add search to your documentation. https://community.algol ...

  8. codevs3728 联合权值

    题目描述 Description 输入描述 Input Description 输出描述 Output Description 样例输入 Sample Input 样例输出 Sample Output ...

  9. ****HTML模板资源汇总

    站长素材: http://sc.chinaz.com/tag_moban/HTML.html wordpress模板: http://www.cssmoban.com/wpthemes/ http:/ ...

  10. JVM 总结

    面试 java 虚拟机 jvm 基础 jvm Write Once Run EveryWhere >jar 包可以在任何兼容jvm上运行 >jvm 适配器 屏蔽掉底层差异 >内存管理 ...