- 浏览: 335774 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
hufangxian:
估计面试官都被你的回答搞晕了。
抽象类和接口的理解 -
alvin198761:
需要了解多态和设计模式,了解一些框架的原理,你就知道这东东真正 ...
抽象类和接口的理解 -
sangei:
谢谢楼上提醒,希望慢慢能有所进步。
抽象类和接口的理解 -
jackra:
书背的不错可以看看设计模式如何使用抽象类
抽象类和接口的理解 -
ptsd:
lag(column_x,number1,XX)用来返回当前数 ...
【转】oracle的LAG和LEAD分析函数
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段: 2:建立PACKAGE BODY: function f_get(str varchar2) end pk_wt; C#段: C#调用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只是个声明罢了。我们在这里定义了一个存储过程返回结集和一个函数,返回字符串。
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;
return varchar2
is
str_temp varchar2(100) := 'good luck!';
begin
str_temp := str_temp || str;
return str_temp;
end f_get;
/
说明:这里建立PACKAGE BODY是具体的说明和使用,将采用什么方式实现。。
在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类型也需要指定,另外和一般的存储过程没什么差别。
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#中转换函数Convert、Parse、TryParse、(int) 的区别
2017-07-13 10:29 2022Convert、Parse、TryParse、(int) 三 ... -
.net mvc 和 webapi中的IOC(Unity实现)
2017-06-24 17:53 1416ASP.NETMVC3:正确实现UnityDepende ... -
C#中重写(override)和覆盖(new)的区别
2017-06-23 14:07 2391重写 用关键字 virtual 修饰的方法,叫虚方法。可以 ... -
linq 行转列
2016-09-14 13:38 2458表结构如下: [sql] view p ... -
linq group
2016-09-14 13:34 633本篇介绍Linq的Group和Join操作,继续使用《Lin ... -
MVC 从后台页面 取前台页面传递过来的值的几种取法
2016-09-09 18:31 1493<1>前台页面 Index视图 注意:用户名表 ... -
C#中(int)、int.Parse()、int.TryParse()和Convert.ToInt32()的区别
2016-09-09 18:30 1464在编程过程中,数据转换是经常要用到的,C#中数据转换的方法很 ... -
C#中的static、readonly与const的比较
2016-09-02 10:17 1110C#中有两种常量类型,分别为readonly(运行时常量) ... -
webapi的跨域请求
2016-08-12 11:15 888国内的技术方法多多少少有点问题,我在国外的论坛找到了办法 ... -
Visual Studio 换颜色
2016-04-03 10:56 822“为革命,保护视力, ... -
学习WCF的牛逼系列--传说中的WCF
2016-03-18 09:17 775说通俗易懂都有些过。 -
Visual Studio2010的技巧(老版vs,但是看起来有些还是挺有用的)
2016-02-26 15:16 1053现在学习C#,用Vi ... -
linq group by 操作
2016-02-19 18:18 1814Linq使用Group By 1 1.简单形式: ... -
linq join group
2016-02-19 18:16 798var query = from de in ... -
linq中如何在join中指定多个条件
2016-02-19 18:13 3814貌似只能使用equals判断相等,大于小于怎么做呢? ... -
Linq的链接
2016-02-19 18:12 507注意:如果是外链接,是将join后面的表into到一个新的表 ... -
C#路径的写法
2015-12-29 10:50 1926路径有3种方式,当前目录下的C#文件相对路径、当前工作盘的C ... -
C# virtual 作用
2015-12-11 11:24 7242一、Virtual方法(虚方法) virtual 关 ... -
C# List去重的三种方法(转)
2015-12-02 13:17 20852三种去重的方法 1、List中的元素实现IEquatabe ... -
vs2013快捷键
2015-10-14 11:09 795VS2013快捷键很多,灵活使用常用快捷键及各项技巧可以让你 ...
相关推荐
【C#调用Oracle存储过程最简单实例】 在C#编程中,调用Oracle数据库的存储过程是一项常见的任务。Oracle存储过程是预编译的SQL和PL/SQL语句集合,可以在数据库服务器端执行,提高了应用程序的性能和安全性。下面...
本文将详细介绍如何使用C#语言连接Oracle数据库,并演示如何调用Oracle存储过程,特别是带有输出参数的情况。这些知识点对于初学者来说尤为重要。 #### 前置知识 1. **C#基础**:理解C#的基本语法和概念。 2. **...
在C#中调用Oracle存储过程来返回数据集是一个常见的任务,这涉及到ADO.NET库的使用,特别是OracleClient组件。Oracle存储过程是数据库中的预编译SQL代码块,可以接收输入参数,执行复杂的业务逻辑,并返回结果。在C#...
总之,C#调用Oracle存储过程涉及到创建存储过程、设置参数模式、在C#中构建OracleCommand对象以及处理输入输出参数。了解这些概念和步骤对于任何进行数据库操作的软件开发者来说都是至关重要的。
在软件开发领域,尤其是涉及到数据库交互时,C# 调用 Oracle 存储过程是一项常见的任务。这个实例提供了一个简单的方法来实现这一操作。首先,我们从 Oracle 数据库的角度出发,了解如何创建一个存储过程。 1. 创建...
本文将详细讲解如何在C#中使用自定义列表(List)作为参数调用Oracle存储过程,以及实现这一功能的关键技术和注意事项。 首先,我们需要了解Oracle数据库中的PL/SQL类型,例如VARCAR2、NUMBER等,它们对应于C#中的...
本文将深入解析Oracle存储过程及其与T-SQL的区别,并介绍如何在C#中调用Oracle存储过程。 首先,Oracle中的Package是一种组织和管理存储过程、函数、变量和类型的有效方式,它可以看作是这些元素的容器,提供了模块...
C#调用oracle存储过程的通用方法 C#调用oracle存储过程的通用方法
本文实例讲述了C#调用Oracle存储过程的方法。分享给大家供大家参考。具体实现方法如下: Oracle数据库代码如下: 代码如下:create or replace procedure proce_test(paramin in varchar2,paramout out varchar2,...
6. **C#调用Oracle存储过程**:在C#中,我们可以使用Oracle Managed Data Access (ODP.NET)库来调用存储过程。首先,确保安装了Oracle的ODP.NET驱动,然后创建连接,执行存储过程: ```csharp using Oracle....
C#中调用ORACLE的PACKAGE里方法和存储过程的应用 在实际开发中,C#与ORACLE数据库的集成是一个非常重要的 topic,本文将详细介绍如何在C#中调用ORACLE的PACKAGE里的方法和存储过程。 首先,我们需要在ORACLE数据库...
### C#中调用Oracle存储过程 #### 一、存储过程简介 存储过程是一段预编译并存储在数据库中的PL/SQL代码块,用于执行特定任务。它们通常包含流程控制语句和SQL语句,旨在提高代码复用性和简化应用程序开发流程。...
C#调用Oracle自定义类型存储过程,Oracle存储入参为type类型,对于不熟悉Oracle朋友,可以参考来调用。实现思路和正常调MSSQL一样,先建立连接,再定义一个IOracleCustomType的类,然后Oracle.DataAccess.dll的...
除了查询,Oracle.ManagedDataAccess库还支持存储过程的调用、事务处理、参数化查询等功能,可以满足各种复杂的数据库操作需求。 总的来说,Oracle.ManagedDataAccess为C#开发者提供了一个轻量级且高效的连接Oracle...
本文实例讲述了C#调用存储过程的方法。分享给大家供大家参考,具体如下: CREATE PROCEDURE [dbo].[GetNameById] @studentid varchar(8), @studentname nvarchar(50) OUTPUT AS BEGIN SELECT @studentname=...
本实例将探讨如何使用C#通过VS2010访问Oracle存储过程。 首先,你需要在VS2010中创建一个新的C#项目,选择相应的.NET Framework版本,如4.0。然后,确保你的系统已经安装了Oracle客户端或者ODP.NET(Oracle Data ...
//设置cmd的类型为存储过程 cmd.CommandText = "EMP_COUNT"; OracleParameter param = new OracleParameter("paraminout", OracleType.VarChar, 20); param.Direction = Parameter
总的来说,通过C#调用Oracle存储过程,封装XML并构建Web服务,可以有效地在医院系统中实现数据交换和业务处理。这种技术在企业级应用中非常常见,因为它提供了灵活、安全且可扩展的数据访问方式。
### 在.NET中调用Oracle存储过程经验总结 #### 一、引言 随着.NET平台的广泛应用,越来越多的应用程序选择.NET框架进行开发。与此同时,Oracle数据库因其高性能和稳定性被广泛采用。因此,在.NET环境中如何有效地...