`
sangei
  • 浏览: 335774 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

C#调用oracle存储过程

阅读更多

  Oracle方面
  1.创建Oracle过程存储
  create or replace procedure proce_test(paramin in varchar2,paramout out varchar2,paraminout in out varchar2)
  as
   varparam varchar2(28);
  begin
   varparam:=paramin;
   paramout:=varparam|| paraminout; 
  end;
  2.测试过程存储
  declare
   param_out varchar2(28);
   param_inout varchar2(28);
  begin
   param_inout:='ff'; 
   proce_test('dd',param_out,param_inout); 
   dbms_output.put_line(param_out);
  end;
  C#方面
  引用Oracle组件 
  using System;
  using System.Data;
  using System.Data.OracleClient; 
  namespace WebApplication4
  {
   public class OraOprater
   {
   private OracleConnection conn=null;
   private OracleCommand cmd=null;
   public OraOprater()
   {
   string mConn="data source=ora9i.ora.com;user id=ora;password=ora"; //连接数据库
   conn=new OracleConnection(mConn);
   try
   {
   conn.Open();
   cmd=new OracleCommand();
   cmd.Connection=conn;
   }
   catch(Exception e)
   {
   throw e;
   }
   }
   public string SpExeFor(string m_A,string m_B)
   {
   //存储过程的参数声明
   OracleParameter[] parameters={
   new OracleParameter("paramin",OracleType.VarChar,20),
   new OracleParameter("paramout",OracleType.VarChar,20),
   new OracleParameter("paraminout",OracleType.VarChar,20)
   };
   parameters[0].Value=m_A;
   parameters[2].Value=m_B;
   parameters[0].Direction=ParameterDirection.Input;
   parameters[1].Direction=ParameterDirection.Output;
   parameters[2].Direction=ParameterDirection.InputOutput;
   try
   {
   RunProcedure("proce_test",parameters);
   return parameters[1].Value.ToString();
   }
   catch(Exception e)
   {
   throw e;
   }
   }
   private void RunProcedure(string storedProcName,OracleParameter[] parameters)
   {
   cmd.CommandText=storedProcName;//声明存储过程名
   cmd.CommandType=CommandType.StoredProcedure;
   foreach(OracleParameter parameter in parameters)
   {
   cmd.Parameters.Add(parameter);
   }
   cmd.ExecuteNonQuery();//执行存储过程
   }
   }
  }
  测试结果:ddff

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

返回类型是cursor时:

ORACLE段:
首先在ORACLE建立PACKAGE和PACKAGE BODY,将在这里面定义函数和存储过程返回结果集。
1:建立PACKAGE:
CREATE OR REPLACE package SCOTT.pk_wt
is
type mytype is ref cursor;
procedure p_wt(mycs out mytype);
function f_get(str in varchar2)
return varchar2;
end; 
/
说明:其实PACKAGE只是个声明罢了。我们在这里定义了一个存储过程返回结集和一个函数,返回字符串。

2:建立PACKAGE BODY:
CREATE OR REPLACE package BODY SCOTT.pk_wt
is
procedure p_wt(mycs out mytype)
is
begin
open mycs for select * from test;
end p_wt;

function f_get(str varchar2)
return varchar2
is
str_temp varchar2(100) := 'good luck!'; 
begin
str_temp := str_temp || str;
return str_temp;
end f_get;

end pk_wt;
/
说明:这里建立PACKAGE BODY是具体的说明和使用,将采用什么方式实现。。

C#段:
在C#中代码将分为两部分,一部分是使用函数,另外一部分是使用结果集。
定义一个连接,从WEBCONFIG里去取得:
private OracleConnection orcn=new OracleConnection(System.Configuration.ConfigurationSettings.AppSettings["scott"]);
C#调用ORACLE函数:
OracleCommand cmd=new OracleCommand("pk_wt.f_get",orcn);
   cmd.CommandType=CommandType.StoredProcedure;
   OracleParameter p1=new OracleParameter("str",OracleType.VarChar,10);
   p1.Direction=System.Data.ParameterDirection.Input;
   p1.Value=this.TextBox1.Text;
   OracleParameter p2=new OracleParameter("result",OracleType.VarChar,100);
   p2.Direction=System.Data.ParameterDirection.ReturnValue;
   cmd.Parameters.Add(p1);
   cmd.Parameters.Add(p2);
   orcn.Open();
   cmd.ExecuteNonQuery();
   orcn.Close();
   this.Button_function.Text=p2.Value.ToString();
其中RESULT是系统自定义的函数返回变量,特别要注意的是,函数的参数的返回类型要指定,另外就是COMMAND类型也需要指定,另外和一般的存储过程没什么差别。

C#调用ORACLE返回结果集:
OracleCommand cmd=new OracleCommand("pk_wt.p_wt",orcn);
   cmd.CommandType=CommandType.StoredProcedure;
   OracleParameter p1=new OracleParameter("mycs",OracleType.Cursor);
   p1.Direction=System.Data.ParameterDirection.Output;
   cmd.Parameters.Add(p1);
   OracleDataAdapter da=new OracleDataAdapter(cmd);
   DataSet ds=new DataSet();
   da.Fill(ds,"test");
   this.DataGrid1.DataSource=ds;
   this.DataGrid1.DataBind();
这里没什么可说的类。。只是定义的数据类型是游标,类型是OUTPUT,另外没什么了

 

//定义游标参数
OracleParameter outResult = new OracleParameter("prm_OutResult", OracleDbType.RefCursor, ParameterDirection.InputOutput);

//定义一个执行的SQL
command.CommandType = CommandType.Text;
command.CommandText 
= "BEGIN TestProcedure(:prm_OutResult); END;";

DataTable outTable 
= new DataTable();

//调用PL/SQL
command.ExecuteNonQuery();

//OUT参数取得
OracleRefCursor refCursor = (OracleRefCursor)outResult.Value;

//将参数读进一个DataTable
OracleDataAdapter adapter = new OracleDataAdapter(command);
adapter.Fill(outTable , refCursor);

分享到:
评论

相关推荐

    C#调用oracle存储过程 最简单的实例

    【C#调用Oracle存储过程最简单实例】 在C#编程中,调用Oracle数据库的存储过程是一项常见的任务。Oracle存储过程是预编译的SQL和PL/SQL语句集合,可以在数据库服务器端执行,提高了应用程序的性能和安全性。下面...

    C#调用oracle方法(包括调用存储过程)

    本文将详细介绍如何使用C#语言连接Oracle数据库,并演示如何调用Oracle存储过程,特别是带有输出参数的情况。这些知识点对于初学者来说尤为重要。 #### 前置知识 1. **C#基础**:理解C#的基本语法和概念。 2. **...

    C#中调用oracle存储过程返回数据集

    在C#中调用Oracle存储过程来返回数据集是一个常见的任务,这涉及到ADO.NET库的使用,特别是OracleClient组件。Oracle存储过程是数据库中的预编译SQL代码块,可以接收输入参数,执行复杂的业务逻辑,并返回结果。在C#...

    c#调用oracle存储过程[定义].pdf

    总之,C#调用Oracle存储过程涉及到创建存储过程、设置参数模式、在C#中构建OracleCommand对象以及处理输入输出参数。了解这些概念和步骤对于任何进行数据库操作的软件开发者来说都是至关重要的。

    C#调用oracle存储过程最简单的实例[归类].pdf

    在软件开发领域,尤其是涉及到数据库交互时,C# 调用 Oracle 存储过程是一项常见的任务。这个实例提供了一个简单的方法来实现这一操作。首先,我们从 Oracle 数据库的角度出发,了解如何创建一个存储过程。 1. 创建...

    C# 传入自定义列表List 到Oracle存储过程

    本文将详细讲解如何在C#中使用自定义列表(List)作为参数调用Oracle存储过程,以及实现这一功能的关键技术和注意事项。 首先,我们需要了解Oracle数据库中的PL/SQL类型,例如VARCAR2、NUMBER等,它们对应于C#中的...

    ORACLE存储过程简析及C#调用.docx

    本文将深入解析Oracle存储过程及其与T-SQL的区别,并介绍如何在C#中调用Oracle存储过程。 首先,Oracle中的Package是一种组织和管理存储过程、函数、变量和类型的有效方式,它可以看作是这些元素的容器,提供了模块...

    调用oracle存储过程的公用方法

    C#调用oracle存储过程的通用方法 C#调用oracle存储过程的通用方法

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

    本文实例讲述了C#调用Oracle存储过程的方法。分享给大家供大家参考。具体实现方法如下: Oracle数据库代码如下: 代码如下:create or replace procedure proce_test(paramin in varchar2,paramout out varchar2,...

    C#调用oracle储存过程例子

    6. **C#调用Oracle存储过程**:在C#中,我们可以使用Oracle Managed Data Access (ODP.NET)库来调用存储过程。首先,确保安装了Oracle的ODP.NET驱动,然后创建连接,执行存储过程: ```csharp using Oracle....

    C#中调用ORACLE的PACKAGE里方法和存储过程的应用

    C#中调用ORACLE的PACKAGE里方法和存储过程的应用 在实际开发中,C#与ORACLE数据库的集成是一个非常重要的 topic,本文将详细介绍如何在C#中调用ORACLE的PACKAGE里的方法和存储过程。 首先,我们需要在ORACLE数据库...

    C#中调用Oracle存储过程

    ### C#中调用Oracle存储过程 #### 一、存储过程简介 存储过程是一段预编译并存储在数据库中的PL/SQL代码块,用于执行特定任务。它们通常包含流程控制语句和SQL语句,旨在提高代码复用性和简化应用程序开发流程。...

    C#调用Oracle自定义类型存储过程.rar

    C#调用Oracle自定义类型存储过程,Oracle存储入参为type类型,对于不熟悉Oracle朋友,可以参考来调用。实现思路和正常调MSSQL一样,先建立连接,再定义一个IOracleCustomType的类,然后Oracle.DataAccess.dll的...

    基于C#连接Oracle数据库Oracle.ManagedDataAccess

    除了查询,Oracle.ManagedDataAccess库还支持存储过程的调用、事务处理、参数化查询等功能,可以满足各种复杂的数据库操作需求。 总的来说,Oracle.ManagedDataAccess为C#开发者提供了一个轻量级且高效的连接Oracle...

    C#调用存储过程详解(带返回值、参数输入输出等)

    本文实例讲述了C#调用存储过程的方法。分享给大家供大家参考,具体如下: CREATE PROCEDURE [dbo].[GetNameById] @studentid varchar(8), @studentname nvarchar(50) OUTPUT AS BEGIN SELECT @studentname=...

    C#访问Oracle存储过程实例源码

    本实例将探讨如何使用C#通过VS2010访问Oracle存储过程。 首先,你需要在VS2010中创建一个新的C#项目,选择相应的.NET Framework版本,如4.0。然后,确保你的系统已经安装了Oracle客户端或者ODP.NET(Oracle Data ...

    C#调用ORACLE存储过程

    //设置cmd的类型为存储过程 cmd.CommandText = "EMP_COUNT"; OracleParameter param = new OracleParameter("paraminout", OracleType.VarChar, 20); param.Direction = Parameter

    C# oracle存储过程的webservice

    总的来说,通过C#调用Oracle存储过程,封装XML并构建Web服务,可以有效地在医院系统中实现数据交换和业务处理。这种技术在企业级应用中非常常见,因为它提供了灵活、安全且可扩展的数据访问方式。

    在.NET中调用Oracle存储过程经验总结.doc

    ### 在.NET中调用Oracle存储过程经验总结 #### 一、引言 随着.NET平台的广泛应用,越来越多的应用程序选择.NET框架进行开发。与此同时,Oracle数据库因其高性能和稳定性被广泛采用。因此,在.NET环境中如何有效地...

Global site tag (gtag.js) - Google Analytics