oracle数据库定义变量和使用_oracle执行变量

oracle数据库定义变量和使用_oracle执行变量一、异常错误介绍我们在使用oracle数据库做程序开发时,一般都会使用plsql做客户端连接查询工具,在写sql语句时plsql经常会报并非所有变量都已绑定01008这样类似的异常错误,通常我们程序员还看不出具体有什么毛病,具体错误提示见下图显示:出现以上这种错误出现的次数多了,我们就会有经验解决了,经过我们常年的工作经验以及网友的问题汇总,得出的最终结论就是:程序员sql语句书写不严谨导致该问题…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一、异常错误介绍

我们在使用oracle数据库做程序开发时,一般都会使用plsql做客户端连接查询工具,在写sql语句时plsql经常会报并非所有变量都已绑定01008这样类似的异常错误,通常我们程序员还看不出具体有什么毛病,具体错误提示见下图显示:

82588048f8d4d5adafbf5d3c5f4ebea8.png

出现以上这种错误出现的次数多了,我们就会有经验解决了,经过我们常年的工作经验以及网友的问题汇总,得出的最终结论就是:程序员sql语句书写不严谨导致该问题的出现,有时候看似将sql写的正确无误,却漏了标点符号,或者标点符号是中文状态下的,又或者单引号双引号导致的问题。

综上异常问题所述,应广大网友需求提问,我们决定将ORA-01008展示的错误异常的情况和解决方案全部汇总一遍,将并非所有变量都已绑定的错误扼杀在摇篮中,广大程序开发者也能够通过本篇文章的总结快速查找出自己问题的所在,可谓一举两得。

二、ORA-01008:并非所有变量都已绑定原因与解决方案案例汇总

案例一:变量字段为null

a484a8f4c1b1269193153204c54bef91.png

392c4d8289b7da0d6038e489f6924c23.png

解决方案:上图中的sql语句是oracle的多表联查复杂查询语句,sql语句越是复杂越容易出现错误,一开始以为上图中的type变量未定义导致的错误,后来将该变量重新定义或者删除后依然报相同的错误。

sql语句代码检查了很多遍都没有任何问题,后来想到可能是因为字段中有null数据导致的变量无法绑定,经查阅筛选数据定位到了null值的字段,将该条数据的null改为空白或者其它字符后该错误就解决了。

案例二:绑定变量不一致

ef136c1a8ff74ab554a689487b3ee46d.png

解决方案:上图就是出现该错误的sql语句,当我们尝试设置参数时,当参数设置错误、绑定变量不对或者变量绑定数量出现异常的时候就会报变量没有绑定的异常。

应用plsql工具执行动态SQL语句查询或更新操作时,SQL字符串中填充的变量数与USING关键字中绑定的变量数不匹配。

案例三:不必要的标点导致并非所有变量都已绑定

bfcfa6ee82c21664a6fff25c1268d421.png

解决方案:上图的代码小编在学习oracle初期自己尝试着写一个存储过程的案例代码,然后就莫名其妙的出现了标题中提到的这种错误。

小编从头到尾地多次比对了oracle数据库存储过程的语法结构,发现写的存储过程语句是没有语病问题的,只不过b => :603前面多加了一个冒号,导致变量不能绑定,将冒号去掉后sql语句就能正常运行了。

大家遇到这种错误时,第一点要做的就是检查下所有的标点符号是否多余,尤其是空格和有中文符号的情况,这种情况肉眼极其难看出来,所以大家平时书写sql语句的同时一定要养成认真的习惯。

案例四:sql语句语法错误

edf0bbb717629a6d2de0ca117fd5438b.png

解决方案:上图中是一个语法有错误的sql存储过程语句,而且还有两个错误,也算是个很典型的并非所有变量都已绑定的案例了。

首先,对冒号的用法没有理解透彻,上图中标注的update修改语句中,plsql中是可以直接使用变量操作的,压根就不需要加冒号多此一举的,存储过程中做动态sql绑定变量时才是冒号的正确用法。

其次,增加数据的sql语法有问题,声明变量是什么顺序,into后面跟的字段也应该与声明变量的顺序一一对应才可以,顺序是不能混乱的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196235.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SpringCloud与Dubbo的比较

    SpringCloud与Dubbo的比较Dubbo一、dubbo简介Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。Dubbo是一款高性能、轻量级的开源JavaRPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。现已发展成为Apache的顶级孵化开源项目,详见官网:…

    2022年6月14日
    28
  • Linux中磁盘数据被误删,怎么恢复

    如果你要是对linux分区和挂载不理解,建议看下:https://blog.csdn.net/qq_41276657/article/details/105168312eg:假如文件被不小心删除操作:1,先卸载磁盘,防止数据被新添加数据替换2,下载extundelete恢复工具https://pan.baidu.com/s/1ocBNA5KTgmVEeFa30-fkSQ3,如果用ex…

    2022年4月3日
    50
  • js数组添加json数据[通俗易懂]

    js数组添加json数据[通俗易懂]//第一种方式personInfo :[],for(vari=0;i<_STAGE.passengerInfoArray.length;i++){ varname=_STAGE.passengerInfoArray[i]; varperson={v:name,text:name}; this.personInfo.push(per…

    2022年5月1日
    66
  • 你不知道的PreparedStatement预编译[通俗易懂]

    你不知道的PreparedStatement预编译[通俗易懂]大家都知道,Mybatis内置参数,形如#{xxx}的,均采用了sql预编译的形式,大致知道mybatis底层使用PreparedStatement,过程是先将带有占位符(即”?”)的sql模板发送至mysql服务器,由服务器对此无参数的sql进行编译后,将编译结果缓存,然后直接执行带有真实参数的sql。如果你的基本结论也是如此,那你就大错特错了。目录1.mysql是否默认开启了预编译功…

    2022年5月30日
    29
  • 学习笔记 – EasyUI官方网站演示[通俗易懂]

    学习笔记 – EasyUI官方网站演示[通俗易懂]EasyUI官方网站演示撰写:2016/03/21更新:2016/04/07博客地址:http://www.cnblogs.com/gibbonnet/p/5362801.html演示地址:h

    2022年7月4日
    33
  • centos5.2下安装配置postfix[通俗易懂]

    centos5.2下安装配置postfix

    2022年3月8日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号