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. shell脚本语言基本命令

    shell脚本语言基本命令脚本:可运行,不需要编译 #vi 1.sh[编写:i(顶格)或o(换一行)]#! /bin/bash##this is a test shell script##Writte ...

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

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

  3. 集训第六周 数学概念与方法 概率 F题

    Submit Status Description Sometimes some mathematical results are hard to believe. One of the common ...

  4. 精帖转载(关于stock problem)

    Note: this is a repost(重新投寄) of my original post here with updated solutions(解决方案) for this problem ...

  5. sql server 数据库 杀掉死锁进程

    use mastergo--检索死锁进程select spid, blocked, loginame, last_batch, status, cmd, hostname, program_namef ...

  6. 九度oj 题目1058:反序输出

    题目1058:反序输出 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:9677 解决:3495 题目描述: 输入任意4个字符(如:abcd), 并按反序输出(如:dcba) 输入: 题目可 ...

  7. CodeForces788B 欧拉路

    B. Weird journey time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  8. [bzoj5343][Ctsc2018]混合果汁_二分答案_主席树

    混合果汁 bzoj-5343 Ctsc-2018 题目大意:给定$n$中果汁,第$i$种果汁的美味度为$d_i$,每升价格为$p_i$,每次最多添加$l_i$升.现在要求用这$n$中果汁调配出$m$杯 ...

  9. Win7 文件加密存储操作后,如何在事后备份证书、秘钥

    这个密钥的特点是只有在此系统下用此账户才可以修改,即便是你用此账户设置加密后删除此账户再重新建一个同名的账户依然无法修改.而且此密钥无法破解.所以一旦加密后,重装系统或者更换账户就无法修改了.唯一的办 ...

  10. 【Nginx】epoll及内核源码详解

    内核源码: https://www.nowcoder.com/discuss/26226?type=0&order=0&pos=21&page=1 epoll流程: 首先调用e ...