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后面跟的字段也应该与声明变量的顺序一一对应才可以,顺序是不能混乱的。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Navicat Premium 中文版注册码

    Navicat Premium 中文版注册码NAVN-U6QE-6PX7-44K5NAVI-WVK6-ZYW4-LQYUNAVJ-5DOO-FCAA-PHMZ经测试,Nacicat版本是10.0.11(黄色版本)可以使用第一个注册码关注我的技术公众号,每天都有优质技术文章推送。微信扫一扫下方二维码即可关注:…

  • 手摸手教你写一个vue的toast弹窗[通俗易懂]

    手摸手教你写一个vue的toast弹窗[通俗易懂]前言:我们在项目开发的过程中,也许会在很多页面实现弹窗的消息,普通的方法就是在这每个界面写些原生js代码来控制弹窗效果,这样明显非常冗余。可通过引入组件的方式,可解决部分冗余的代码,但是每个要使用的界面都必须导入、注册、使用,这些代码还是比较冗余。通过插件的方式封装Toast,可解决每个页面重复导入、注册、使用的重复过程。一.封装Toast组件css自行设计二.Toast插件方式的封装在使用Toast前需要做相应的准备工作:添加一个index.js文件-里面定义一个对象-然后导

  • 看看行不行「建议收藏」

    看看行不行「建议收藏」支持FreakshareRapidgatorHotfileKeep2shareRyushareFilepostLumfileBitshareFilefactoryExtabitNetloadUploaded.toUl.toCtdisk等主流网盘会员直接高速下载!Ctdisk城通网盘/Dbank华为网盘完全免费!http://wishuhappy.com/[@Ie4Gy

  • java反射之Method的invoke方法实现[通俗易懂]

    java反射之Method的invoke方法实现[通俗易懂]在框架中经常会会用到method.invoke()方法,用来执行某个的对象的目标方法。以前写代码用到反射时,总是获取先获取Method,然后传入对应的Class实例对象执行方法。然而前段时间研究invoke方法时,发现invoke方法居然包含多态的特性,这是以前没有考虑过的一个问题。那么Method.invoke()方法的执行过程是怎么实现的?它的多态又是如何实现的呢?本文将从java和JVM…

  • mysql econnreset_Nodejs 套接字报错处理 Error: read ECONNRESET

    mysql econnreset_Nodejs 套接字报错处理 Error: read ECONNRESET错误信息:Error:readECONNRESETatTCP.onStreamRead(internal/stream_base_commons.js:162:27)出现上述情况一般是客户端关闭了socket连接导致的错误,这个错误会导致程序的异常退出解决办法:varpReq=http.request(options,function(pRes){cSock.writeHead…

  • 又一个新的开始「建议收藏」

    又有一段时间没有进行整理和总结输出了,其实最近也没有闲着,也是一直在看书学习状态,看Java并发编程相关的知识,之前买了《Java并发编程的艺术》,去年看了一遍。最近又买了《Java并发编程实战》,两本书都挺好的,《Java并发编程的艺术》这本看了一遍,最近在看其中的一些章节,又有新的一些体会,新的认识。很多时候看了一遍的书,就不会在读第二遍,但是有些书适合读两遍以上,要不然根本无法理解书中的精…

发表回复

您的电子邮箱地址不会被公开。

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