• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > asp.net中调用oracle存储过程的方法

asp.net中调用oracle存储过程的方法

作者:GD_熬夜 字体:[增加 减小] 来源:互联网 时间:2017-05-28

GD_熬夜 通过本文主要向大家介绍了asp.net,asp net培训,asp和asp.net的区别,零基础学asp.net,c#和asp.net的区别等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。

不多说了,本文通过两种方法介绍asp.net中调用oracle存储过程的方法,具体内容请看下面代码。

调用oracle存储过程方法一:

ORACLE代码

CREATE OR REPLACE PROCEDURE gd_CURSOR(MYCS1 OUT SYS_REFCURSOR,MYCS2 OUT SYS_REFCURSOR,a out varchar)as
BEGIN
 a:='test';
 OPEN MYCS1 FOR
 SELECT 1 from dual;
 OPEN MYCS2 FOR
 SELECT 2 from dual;

END;
</div>

C#代码

 

 /// <summary>
 /// 执行oracle存储过程返回多个结果集
 /// </summary>
 /// <param name="strProcName">存储过程名称</param>
 /// <param name="ResultCount">返回个数</param>
 /// <param name="paras">参数</param>
 /// <returns>任意对象数组</returns>
 public object[] ExcuteProc_N_Result(string strProcName, int ResultCount, params OracleParameter[] paras)
 {
  using (OracleConnection conn = new OracleConnection("User ID=用户名;Password=密码;Data Source=数据库;"))
  {
  OracleCommand cmd = new OracleCommand(strProcName, conn);
  if (paras != null && paras.Length > 0)
  {
   for (int j = 0; j < paras.Length; j++)
   {
   if (paras[j].Value == null)
   {
    paras[j].Value = DBNull.Value;
   }
   }
  }
  cmd.Parameters.AddRange(paras);
  cmd.CommandType = CommandType.StoredProcedure;
  conn.Open();
  cmd.ExecuteNonQuery();
  int i = 0;
  //int nOutputParametersCount = 0;
  object[] objResult = new object[ResultCount];
  foreach (OracleParameter p in cmd.Parameters)
  {
   if (p.Direction == ParameterDirection.Output || p.Direction == ParameterDirection.InputOutput)
   {
   if (p.Value is OracleDataReader)
   {
    OracleDataReader reader = p.Value as OracleDataReader;
    objResult[i++] = ConvertDataReaderToDataTable(reader);
   }
   else
   {
    objResult[i++] = p.Value;
   }
   }
  }
  return objResult;
  }
 }
 /// <summary> 
 /// 将DataReader 转为 DataTable 
 /// </summary> 
 /// <param name="DataReader">OleDbDataReader</param> 
 protected DataTable ConvertDataReaderToDataTable(OracleDataReader reader)
 {
  DataTable objDataTable = new DataTable("TmpDataTable");
  try
  {
  int intFieldCount = reader.FieldCount;//获取当前行中的列数;
  for (int intCounter = 0; intCounter <= intFieldCount - 1; intCounter++)
  {
   objDataTable.Columns.Add(reader.GetName(intCounter), reader.GetFieldType(intCounter));
  }
  //populate datatable 
  objDataTable.BeginLoadData();
  //object[] objValues = new object[intFieldCount -1]; 
  object[] objValues = new object[intFieldCount];
  while (reader.Read())
  {
   reader.GetValues(objValues);
   objDataTable.LoadDataRow(objValues, true);
  }
  reader.Close();
  objDataTable.EndLoadData();
  return objDataTable;
  }
  catch (Exception ex)
  {
  throw new Exception("转换出错出错!", ex);
  }
 }
</div>

调用方法

OracleParameter[] oracleParameter = new OracleParameter[]{
new OracleParameter("MYCS1",OracleType.Cursor),
new OracleParameter("MYCS2",OracleType.Cursor),
new OracleParameter("a",OracleType.VarChar,200),
};
oracleParameter[0].Direction = ParameterDirection.Output;
oracleParameter[1].Direction = ParameterDirection.Output;
oracleParameter[2].Direction = ParameterDirection.Output;

object[] xxx = ExcuteProc_N_Result("gd_CURSOR", 3, oracleParameter);
</div>

调用oracle存储过程方法二:

存储过程结构如下:

Create or Replace Procedure xx_yy
(
 i_OrderID in number,
 i_ReturnValue out number
)
is
 v_RealValue number;
 v_TotalValue number;
 v_AdvendorID number;
begin
 自己写就行
end;

</div>

下面讲一下调用:

表结构

create table ORDERTABLE
(
 ORDERID NUMBER not null,
 TEXT NUMBER not null
)
</div>

存储过程

(
 i_OrderID in number,
 i_ReturnValue out number
)
is
 spass ordertable.text%type;
begin
 select text into spass from ordertable where orderid=i_OrderID; 
 i_ReturnValue:=spass;
 exception
 when no_data_found
 then i_ReturnValue:=-1; 
end;
</div>

源码:

using System.Data .OracleClient ;//(别忘了添加)
OracleConnection Oraclecon = new OracleConnection ("Password=dloco;User ID=dloco;Data Source=dloco;");
  OracleCommand myCMD = new OracleCommand();
  OracleParameter[] parameters = { new OracleParameter("i_OrderID", OracleType.Number, 10),new OracleParameter("i_ReturnValue",OracleType.Number,10 )};
  parameters[0].Value = 1;
  parameters[1].Direction = ParameterDirection.Output;

  myCMD.Connection = Oraclecon;
  myCMD.CommandType = CommandType.StoredProcedure;
  myCMD.CommandText = "dloco.xx_yy";

  myCMD.Parameters .Add (parameters[0]);
  myCMD.Parameters .Add (parameters[1]);

  myCMD.Connection.Open();  

  myCMD.ExecuteNonQuery();  
  
  string result=myCMD.Parameters["i_ReturnValue"].Value.ToString();
  MessageBox.Show (result);

  Oraclecon.Close();
</div>

以上就是asp.net中调用oracle存储过程的全部内容,希望对大家有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ASP.NET C#中Application的用法教程
  • Asp.Net中避免重复提交和弹出提示框的实例代码
  • asp.net core mvc权限控制:在视图中控制操作权限
  • asp.net core项目mvc权限控制:分配权限
  • asp.net(C#)清除全部Session与单个Session的方法
  • C#.NET 图片水印添加代码
  • asp.net获取系统当前时间的方法详解
  • C#.net编程创建Access文件和Excel文件的方法详解
  • C#(asp.net)多线程用法示例(可用于同时处理多个任务)
  • ASP.NET总结C#中7种获取当前路径的方法

相关文章

  • 2017-05-28C#的编码规范详细说明
  • 2017-05-28C#中单例的实现方法
  • 2017-05-28C#中Decimal类型截取保留N位小数并且不进行四舍五入操作
  • 2017-05-28Windows 8 Metro用C#连接SQLite及创建数据库,数据表的增删改查的实现
  • 2017-05-28C#测量程序运行时间及cpu使用时间实例方法
  • 2017-05-28C#实现TCP连接信息统计的方法
  • 2017-05-28C#中使用WinRAR实现加密压缩及解压缩文件
  • 2017-05-28c# 值类型实例构造器
  • 2017-05-28C#、.Net中把字符串(String)格式转换为DateTime类型的三种方法
  • 2017-05-28C#特性 匿名类型与隐式类型局部变量使用介绍

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • c#几种数据库的大数据批量插入(SqlServer、Oracle、SQLite和MySql)
    • 支持多类型数据库的c#数据库模型示例
    • 解决C#程序只允许运行一个实例的几种方法详解
    • 浅解关于C#多线程的介绍
    • c#操作附加数据库的方法
    • C#实现Array添加扩展实例
    • C#算法之关于大牛生小牛的问题
    • C#文字换行的实现方法
    • C#简单读取主机上所有进程的方法
    • C#中new的用法及与override的区别分析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有