1、使用参数化传参

先看一段sql

  select TABLE_COLUMN_NAME
from CSV_PARA_MAPPING
where TABLE_NAME = ':v_tabName'
and CSV_PARA_NAME = ':v_date'
union
select TABLE_COLUMN_NAME
from CSV_PARA_MAPPING
where TABLE_NAME = ':v_tabName'
and CSV_PARA_NAME = ':v_time'

这个写法是错误的,不应该使用单引号。字段TABLE_NAME、CSV_PARA_NAME均是VARCHAR2类型的,但是不要使用单引号。我的理解是传入的参数本身就是带有类型的,没有必要加上单引号以表明这是一个字符串。也就是传入参数的方式不是简单的字符串拼接,而是带有数据类型的。所以正确的写法如下

  select TABLE_COLUMN_NAME
from CSV_PARA_MAPPING
where TABLE_NAME = :v_tabName
and CSV_PARA_NAME = :v_date
union
select TABLE_COLUMN_NAME
from CSV_PARA_MAPPING
where TABLE_NAME = :v_tabName
and CSV_PARA_NAME = :v_time

再看一下代码

cmd.Parameters.Add(new OracleParameter("v_tabName", tableName));
cmd.Parameters.Add(new OracleParameter("v_date", dateParaName));
cmd.Parameters.Add(new OracleParameter("v_time", timeParaName));

报错:ORA-01008: not all variables bound,看起来像是没有给参数赋足够的值。有4个参数,但是有2个是重复使用的参数,所以实际上只有3个参数。这里有一个很坑的地方就是,并不会去辨析参数的名字,也就是说2个:v_tabName被认为是不同的参数,给参数赋值时是按照这样的规则,第n个赋的值给第n个参数,根本不看参数的名字。所以当然会报错了。如果想按照参数的名字来赋值的话,需要加上以下语句

cmd.BindByName = true;

Oracle.DataAccess使用问题汇总的更多相关文章

  1. Web项目使用Oracle.DataAccess.dll 类库连接oracle数据库

    首先我用的工具是oracle 32位免安装版+Oracle.DataAccess.dll 32位  文件版本4.121.1.0+vs2013 +win7 64位 Oracle.DataAccess.d ...

  2. IIS 连接 oracle报Oracle.DataAccess版本错误解决办法

    通过IIS连接oracle时报“Could not load file or assembly 'Oracle.DataAccess, Version=2.112.3.0, Culture=neutr ...

  3. EF:Oracle.DataAccess.Client.OracleException: ORA-12154: TNS:could not resolve the connect identifier specified

    报告错误:Oracle.DataAccess.Client.OracleException: ORA-12154: TNS:could not resolve the connect identifi ...

  4. Asp.net using Oracle.DataAccess.dll access oracle 11g 64bit & x86

    使用.net访问oracle数据库时一般需要在机器上安装instantclient才能正常连接. 下面介绍一种不用安装instantclient直接引用dll就用.net能连接oracle数据库的方法 ...

  5. oracle教程:PLSQL常用方法汇总

    oracle教程:PLSQL常用方法汇总 在SQLPLUS下,实现中-英字符集转换alter session set nls_language='AMERICAN';alter session set ...

  6. 未能加载文件或程序集“Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342”或它的某一个依赖项。 解决方法

    webconfig文件对于oracle的映射错误.需要在以下位置修改 <runtime> <legacyCorruptedStateExceptionsPolicy enabled= ...

  7. 未能加载文件或程序集“Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"

    转载自原文 未能加载文件或程序集"Oracle.DataAccess, Version=2.112.1.0,..." 若本机的Oracle版本是32位系统,则在调用Oracle数据 ...

  8. 向Oracle中插入记录时,出现“Oracle.DataAccess.Client.OracleException ORA-00933 ”错误

    错误信息的弹出框

  9. 未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项.试图加载格式不正确的程序

    .NET:Microsoft Visual Studio 2010 + .NET Framework 3.5 操作系统:windows2008 R2 64 位操作系统 oracle数据库:32位的OD ...

  10. [转]Oracle 调用存储过程并显示结果集 Oracle.DataAccess.Client OracleDbType.RefCursor

    本文转自:http://liye9801.blog.163.com/blog/static/6019703200901244448950/ 今天学习了一个Oracle中的存储过程,一开始便被如果返回结 ...

随机推荐

  1. FTP调优

    最近在解决客户的问题时接触到了一些FTP的问题,自己在使用过程中发现了很多问题,所以这里总结了一些调优的办法: 服务:vsftp 非常安全文件传输 配置文件:/etc/vsftpd/vsftpd.co ...

  2. aop切面记日志

    package com.netauth.utils.component; import java.lang.annotation.ElementType; import java.lang.annot ...

  3. Bug Bash测试

    愿望 养成参加 Bug Bash 的习惯,就像养成到点就吃饭一样的习惯.   一.Bug Bash 名词解释 A Bug Bash is a collaborative effort across o ...

  4. 安装centos,ubuntu系统

    安装centos系统 1.首先进入VMware,新建虚拟机,选择典型,然后下一步 2.稍后安装系统,下一步 3.因为此次安装的是centos7.9系统,因此版本选择7 64位,下一步 4.选择虚拟机的 ...

  5. react native SectionList组件实现多选

    如下图所示: 代码如下: import React, { useRef, Component } from 'react'; import { Platform, Text, View, TextIn ...

  6. docker tar包下载地址

    https://download.docker.com/linux/static/stable/x86_64/

  7. docker之rabbitmq delayed message exchange

    创建dockerfile FROM rabbitmq:3.9.11-management-alpine COPY rabbitmq_delayed_message_exchange-3.9.0.ez ...

  8. 浅写java环境配置

    我对于Java环境配置的理解: 下载JDK ==>安装JDK ==>在电脑的系统中添加JDK中所包含的Java环境 ==>重启(主要是给系统监测到环境,非必要,但是建议)==> ...

  9. 搭建 springboot 应用

    一.采用 Spring Initializr 搭建springboot应用 步骤: 1.只需要打开网址: https://start.spring.io/: 2.选择使用 Maven 构建,语言 ja ...

  10. 7.26-javascript

    折半查找:数据必须有序 //数组定义 let arr1 = [1,2,3,4,5]; //用字面量定义数组 let arr2 = new Array(1,2,3,4,5); //用字面量定义数组 le ...