最近两天使用的oracle数据库开发项目时遇到了2个异常,第一个是执行sql语句时报异常:“ORA-00911: 无效字符”,如下图:

sql语句如下:

断点调试,把sql语句拷贝到pl/sql里执行,sql语句执行正常。反复测试几次后,去掉了sql语句结尾的分号,程序执行正常。

总结到:pl/sql里执行的sql语句可以加分号,但是程序里执行的sql语句字符串结尾不要加分号。

第二个异常是:

ORA-06550: 第 1 行, 第 7 列:
PLS-00306: wrong number or types of arguments in call to 'ADDOPERATIONINFO'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored

异常截图如下:

调用的存储过程如下:

根据异常提示,应该是说存储过程的参数个数不对或者是存储过程参数类型不对。

反复对比程序传入的参数个数和类型,与oracle里存储过程的参数个数和类型,是完全一模一样的。困惑了很久后,测试发现,是由于C#程序传入的字符串类型参数entityId是null,存储过程第313行判断p_EntityId is not null 时,插入到ENTITYANDOPERATION表。

即:程序里传入的是null,但是到数据库里用is not null判断的的结果是true。

于是我在程序里对entityid进行了判断,当entityid为null时,p_EntityId传入的值为System.DBNull.Value,如下图:

这样的话,实现了我想要的效果,而不报错:

当entityid不为null时,存储过程第313行if语句返回true,执行存储过程的第314行插入语句;

当entityid为null值时,传入的是System.DBNull.Value,存储过程第313行if语句返回false,不执行第314行插入语句。

使用oracle数据库开发,异常总结的更多相关文章

  1. 用 Docker 搭建 ORACLE 数据库开发环境

    用 Docker 搭建 ORACLE 数据库开发环境 需要安装 ORACLE 数据库做开发,直接安装的话因为各类平台的限制,非常复杂,会遇到很多问题. 还好,现在有 Docker 化的部署方式,省去很 ...

  2. Oracle数据库开发

    Oracle数据库开发之PL/SQL基础实战视频课程 1 PL/SQL 简介 2 入门实例(一) 3 入门实例(二) 4 PL/SQL 变量和常量 5 PL/SQL数据类型(一) 6 PL/SQL数据 ...

  3. 【转】oracle数据库开发的一些经验积累

    1.不安装Oracle客户连接Oracle 8的方法  请将以下文件拷贝到运行文件所在目录 一.ODBC动态库 : ctl3d32.dll msvcrt40.dll odbc16gt.dll odbc ...

  4. VS2017离线安装与Oracle数据库开发环境搭建

    记得之前使用VS2015打开老的MVC4项目,不能右键创建控制器和添加视图,让我非常不习惯!找遍了网络无果,最后只能回到VS2013,但我就是不喜欢用旧的VS,这是不是病... 1.将VS2017离线 ...

  5. oracle 数据库io 异常,错误代码17002 解决办法

    数据库使用一个月了,突然挂掉:错误代码17002 io异常:read timeout 解决: 1.登陆sql命令窗口 [oracle@hostname ~]$ sqlplus /nolog SQL*P ...

  6. Visual Studio 2017使用ODT 连接Oracle 数据库出现异常

    2019.5.23 更新 突然发现原来是是sqlnet.ora在搞鬼,只要将SQLNET.AUTHENTICATION_SERVICES=(nts)  改为 SQLNET.AUTHENTICATION ...

  7. Oracle 数据库应用开发 30 忌

    原创 LaoYuanPython CSDN 今天 作者 | LaoYuanPython       责编 | 欧阳姝黎出品 | CSDN原力计划 引言 笔者及所在团队从 2000 年开始的 CRM 等 ...

  8. .Net 中读写Oracle数据库常用两种方式

    .net中连接Oracle 的两种方式:OracleClient,OleDb转载 2015年04月24日 00:00:24 10820.Net 中读写Oracle数据库常用两种方式:OracleCli ...

  9. 教你如何阅读Oracle数据库官方文档

    < Ask Oracle官方原创 > Oracle 官方文档 数量庞大,而且往往没有侧重点,让oracle新手看起来很费力.但是,仍有很多Oracle使用者认为任何oracle学习资料都比 ...

随机推荐

  1. form里面的action和method(post和get的方法)使用

    一.form里面的action和method的post使用方法 <%@ Page Language="C#" AutoEventWireup="true" ...

  2. Java中的使用了未经检查或不安全的操作

    1. javac -Xlint:unchecked MyMath.java检查不安全的操作 /***************************************************/ ...

  3. iOS开发富文本

    NSMutableAttributedString * attributedStr = [[NSMutableAttributedString alloc] initWithString:@" ...

  4. java中的日期处理

    学习Java日期处理,看见这一篇比较详细,转载之. 转自:http://www.cnblogs.com/hqr9313/archive/2012/04/19/2458221.html   时间日期1) ...

  5. windows下9款一键快速搭建PHP本地运行环境的好工具(含php7.0环境)

    推荐几款一键快速搭建PHP本地运行环境的好工具(含php7.0及apache,nigix,mysql) 首推phpstudy2016和wampServer3.0.6     理由支持php7.0 目前 ...

  6. 关于R语言的一些编程经验

    一个晚上写出一个能用的程序…… 来说说遇见的问题吧 zqw<-read.table(file = "c:/data/zqw.txt") zqw<-data.frame( ...

  7. markdown 自己搞一个浏览工具

    注意!`下不能有空行 `上也不能有空行 问题未解决 <!DOCTYPE html> <html lang="en"> <head> <me ...

  8. 第二次冲刺spring会议(第六次会议)

    [例会时间]2014/5/8 21:15 [例会地点]9#446 [例会形式]轮流发言 [例会主持]马翔 [例会记录]兰梦 小组成员:兰梦 ,马翔,李金吉,赵天,胡佳 奇

  9. 总结一下C++各个版本之间的功能扩充

    活到老,学到老.   C++ 98 我们学习和教材中常见的. C++ 03 主要是对98版本进行了bug修复. C++ 11 引入的新功能请参见:         http://www.cpluspl ...

  10. laravel性能优化

    1. 配置信息缓存 使用以下 Artisan 自带命令,把 config 文件夹里所有配置信息合并到一个文件里,减少运行时文件的载入数量: php artisan config:cache 上面命令会 ...