使用 Oracle.DataAccess.Client 驱动 和 OleDB 调用Oracle 函数的区别

news2024/11/25 4:35:48

Oracle.DataAccess.Client 驱动 和 OleDB 调用Oracle 函数的区别

Oracle.DataAccess.Client 驱动 和 OleDB 调用Oracle 函数的区别主要体现在两个方面

1 命令文本的区别

CommandText:

Oracle.DataAccess.Client 驱动:

OracleCommand.CommandText ="Oracle函数名"

OleDB 驱动:

OleDBCommand.CommandText ="{ ? = call oracle函数名(?,?)}"

2 命令类型的区别 

CommandType

目录

Oracle.DataAccess.Client 驱动 和 OleDB 调用Oracle 函数的区别

1 命令文本的区别

2 命令类型的区别 

3 代码示列:


Oracle.DataAccess.Client 驱动:

OracleCommand.CommandType = CommandType.StoredProcedure;

OleDB 驱动:

OleDBCommand.CommandType = CommandType.Text;

3 代码示列:

using System;
using Oracle.DataAccess.Client;
using System.Data.OleDb;
using System.Data;

class Program

{
    //Oracle.DataAccess.Client;
    public void ExecuteOracleProcedure()

    {

        string oradb = "User Id=yourUsername;Password=yourPassword;Data Source=yourDataSource";

        OracleConnection conn = new OracleConnection(oradb);

        conn.Open();

        //OracleCommand.CommandText ="Oracle函数名";

        OracleCommand cmd = new OracleCommand("GET_EMPLOYEE_NAME", conn);

        //此处为 CommandType 取值CommandType.StoredProcedure,不能取CommandType.Text

        cmd.CommandType = CommandType.StoredProcedure;

        // 添加输入参数

        cmd.Parameters.Add("EMPLOYEE_ID", OracleDbType.Int32).Value = 123;

        // 添加输出参数

        cmd.Parameters.Add("EMPLOYEE_NAME", OracleDbType.Varchar2, ParameterDirection.Output).Size = 100;

        cmd.ExecuteNonQuery();

        // 获取输出参数的值

        string employeeName = cmd.Parameters["EMPLOYEE_NAME"].Value.ToString();

        Console.WriteLine("Employee Name: " + employeeName);

        conn.Close();

    }

    //oledb
    public void ExecuteOleDBProcedure()

    {

        string oradb = "Provider=OraOLEDB.Oracle.1;User Id=yourUsername;Password=yourPassword;Data Source=yourDataSource";
     
        OleDbConnection conn = new OleDbConnection(oradb);

        conn.Open();

        //OleDBCommand.CommandText ="{ ? = call oracle函数名(?,?)}";函数有几个参数就添加几个问号,问号有“,”隔开

        OleDbCommand cmd = new OleDbCommand("{ ? = call GET_EMPLOYEE_NAME(?,?)}", conn);

        //此处为 CommandType 取值CommandType.Text

        cmd.CommandType = CommandType.Text;

        // 添加输入参数

        cmd.Parameters.Add("EMPLOYEE_ID", OleDbType.Integer).Value = 123;
        cmd.Parameters["EMPLOYEE_ID"].Direction = ParameterDirection.Input;
        // 添加输出参数

        cmd.Parameters.Add("EMPLOYEE_NAME", OleDbType.VarChar).Size = 100;
        cmd.Parameters["EMPLOYEE_NAME"].Direction = ParameterDirection.Output;
        cmd.ExecuteNonQuery();

        // 获取输出参数的值

        string employeeName = cmd.Parameters["EMPLOYEE_NAME"].Value.ToString();

        Console.WriteLine("Employee Name: " + employeeName);

        conn.Close();

    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2247071.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用ENSP实现静态路由

一、双路由器静态路由 1.项目拓扑 2.项目实现 (1)路由器AR1配置 进入系统试图 sys将路由器命名为R1 sysname R1进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为1.1.1.1/24 ip address 1.1.1.1 24进入g0/0/1接口 int g0/0/1将g0/0/1接口IP地址配置为192.168.1.1/24 ip ad…

3、集线器、交换机、路由器、ip的关系。

集线器、交换机、路由器三者的关系 1、集线器2、交换机(每个交换机是不同的广播域,ip地址起到划分广播域的作用)3、 路由器4、ip地址 1、集线器 一开始两台电脑通信就需要网线就可以,但是三台或者更多主机通信时,就需…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第二十二集:制作游戏的对话系统

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、制作游戏的对话系统 1.通过转移点的门讲解制作对话系统2.以游戏的石碑为例制作确认能力界面总结 前言 hello大家好久没见,之所以隔了这么久…

ChatGPT 桌面版发布了,如何安装?

本章教程教大家如何进行安装。 一、下载安装包 官网地址地址:https://openai.com/chatgpt/desktop/ 支持Windows和MacOS操作系统 二、安装步骤 Windows用户下载之后,会有一个exe安装包,点击运行安装即可。 注意事项,如果Windows操…

Excel求和如何过滤错误值

一、问题的提出 平时,我们在使用Excel时,最常用的功能就是求和了,一说到求和你可能想到用sum函数,但是如果sum的求和区域有#value #Div等错误值怎么办?如下图,记算C列中工资的总和。 直接用肯定会报错&…

librdns一个开源DNS解析库

原文地址:librdns一个开源DNS解析库 – 无敌牛 欢迎参观我的个人博客:无敌牛 – 技术/著作/典籍/分享等 介绍 librdns是一个开源的异步多功能插件式的解析器,用于DNS解析。 源代码地址:GitHub - vstakhov/librdns: Asynchrono…

成都睿明智科技有限公司怎么样可靠不?

在这个日新月异的数字时代,电商行业如同一股不可阻挡的洪流,席卷着每一个消费者的生活。而抖音,作为短视频与电商完美融合的典范,更是为无数商家开辟了一片全新的蓝海。在这片充满机遇与挑战的海洋中,成都睿明智科技有…

栈的应用,力扣394.字符串解码力扣946.验证栈序列力扣429.N叉树的层序遍历力扣103.二叉树的锯齿形层序遍历

目录 力扣394.字符串解码 力扣946.验证栈序列 力扣429.N叉树的层序遍历 力扣103.二叉树的锯齿形层序遍历 力扣394.字符串解码 看见括号,由内而外,转向用栈解决。使用两个栈处理,一个用String,一个用Integer 遇到数字:提取数字放入到数字栈…

Vue3移动端-点餐项目

目录 一、项目构建 1、使用了vite构建vue3项目,其中支持如下图 2、其余路由配置、axios封装、组件封装 都与 后台管理系统 方式一致 二、Vant组件引入 1、安装 (vue3使用vant4)Vant官方文档 2、全局引入main.ts/js 3、如果是基于 Vite 的…

分词器的概念(通俗易懂版)

什么是分词器?分词器(Tokenizer)是自然语言处理(NLP)中的一个关键组件,它的主要功能是将文本数据分解成更小的单元,这些单元可以是单词、子词(subword)、字符或其他有意义…

【JavaEE进阶】 JavaScript

本节⽬标 了解什么是JavaScript, 学习JavaScript的常⻅操作, 以及使⽤JQuery完成简单的⻚⾯元素操作. 一. 初识 JavaScript 1.JavaScript 是什么 JavaScript (简称 JS), 是⼀个脚本语⾔, 解释型或即时编译型的编程语⾔. 虽然它是作为开发Web⻚⾯的脚本语⾔⽽出名,…

浮点数的表示—IEEE754标准

浮点数的表示—IEEE754标准 引言 我们知道,在计算机中,数字以0和1组成的二进制序列来表示。但是,对于非常大的数字以及非常接近0的数字,简单的存储方式往往会造成精度的丢失。 为了解决这个问题,提供更高效的浮点数…

uniapp vue2项目迁移vue3项目

uniapp vue2项目迁移vue3项目,必须适配的部分 一、main.js 创建应用实例 // 之前 - Vue 2 import Vue from vue import App from ./App Vue.config.productionTip false // vue3 不再需要 App.mpType app // vue3 不再需要 const app new Vue({ ...App }) …

计算机网络(14)ip地址超详解

先看图: 注意看第三列蓝色标注的点不会改变,A类地址第一个比特只会是0,B类是10,C类是110,D类是1110,E类是1111. IPv4地址根据其用途和网络规模的不同,分为五个主要类别(A、B、C、D、…

Unity DOTS中的Entity

Unity DOTS中的Entity 在DOTS中entity往往只被看作一个ID,用来查找component,但实际上Unity为了有效地管理entity,在背后还做了一些其他的工作。首先是Entity类本身的定义,它的确跟一个ID差不多,只包含了两个int类型的…

SpringBoot实现单文件上传

一、在springBoot项目中的pom.xml添加依赖。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> 二、在资源目录下的static目录下中创建一个upload.html的表单文件…

CNN—LeNet:从0开始神经网络学习,实战MNIST和CIFAR10~

文章目录 前言一、CNN与LeNet介绍二、LeNet组成及其名词解释2.1 输入2.2 卷积层2.3池化层2.4 全连接层2.5 总结 三、MNIST实战3.1 构建神经网络3.2 数据处理3.3 &#xff08;模板&#xff09;设置优化器&#xff0c;损失函数&#xff0c;使用gpu(如果是N卡有cuda核心)&#xff…

PVE系统中风扇驱动安装——linux 硬件驱动安装(IT8613E为例)

本文提供全流程命令代码,IT8613E的Github下载地址,pve头文件官方下载地址 对网卡驱动感兴趣的可以看这篇文章 linux系统下 usb网卡的驱动安装_0bda:a192-CSDN博客文章浏览阅读1.5w次,点赞16次,收藏72次。本文介绍如何通过lsusb查找USB网卡vid:pid,使用google搜索驱动信息…

美国人工智能国家安全备忘录核心解读(下)

文章目录 三、美国国内和国际人工智能治理策略1.保证AI政策有效执行的协调措施2.推进AI治理格局的优势地位&#xff08;1&#xff09;对于美国盟友&#xff1a;试图向盟友保证其将从美国的战略中获益。&#xff08;2&#xff09;对于美国的战略竞争对手&#xff1a;介绍了超越竞…

工具学习_Docker

0. Docker 简介 Docker 是一个开源平台&#xff0c;旨在帮助开发者构建、运行和交付应用程序。它通过容器化技术将应用程序及其所有依赖项打包在一个标准化的单元&#xff08;即容器&#xff09;中&#xff0c;使得应用程序在任何环境中都能保持一致的运行效果。Docker 提供了…