当前位置: 首页 > news >正文

ORACLE EXECUTE IMMEDIATE 用法详解

最近工作中有用到存储过程,关于存储过程其中EXECUTE IMMEDIATE在实际开发中用到的还是比较多的 于是乎就把自己在用到时存在的用法及问题在这里总结一下:

如果在存储过程中 有需要创建表格 更改表结构等操作的时候 并且在接下去的操作需要用到新的表或者结构等问题的时候 必须要使用EXECUTE IMMEDIATE 去执行SQL语句,否则由于oracle的机制则会提示报错,表或者表结构未创建或为修改,这里只举两个例子,实际运用得根据情况去判断!

最近的开发过程中也经常使用到执行一个字符串的SQL语句 需要将其插入到一个变量中来,EXECUTE IMMEDIATE 'SELECT T.ID FROM STUDENT T WHERE  A.NAME=''小明''' INTO V_ID(已在存储过程定义的变量名)

这里只是举例,假如小明只有一个 那个会顺利的将值插入到变量中,但如果是该变量存在两个或以上的值则需要用到

BULK COLLECT INTO 变量名;如果要将插入到多个变量中则在后面累加即可。

这里需要注意的是这个变量名必须是个数组类型,否则编译无法通过,如果对其循环可以执行相应的操作。

如果语句中需要用到变量则有两种方法:

方法1:可以拼接字符串类型的SQL语句,如(V_SQL:='SELECT T.ID FROM STUDENT T WHERE  A.NAME='|| V_NAME;)。

方法2:使用USING 关键字 例如: EXECUTE IMMEDIATE 'SELECT T.ID FROM STUDENT T WHERE  A.NAME=:V_NAME' USING '小明' INTO V_ID; 也可以把变量传过来 这里只举例

在一些特殊情况也可以通过这些操作来拼接SQL语句,例如限制条件的区分,这样会使一个SQL语句在不同的场景中有不同的效果,而不只是简单的用变量来取代的作用,

由于我使用oracle也只有几个月时间,所以对这个的心得也大概如此了,希望对大家以后的使用会有所帮助。

 

转载于:https://www.cnblogs.com/yanbinfeng1995/p/9896372.html

相关文章:

  • SpringMVC使用@ResponseBody输出字符串时遇到的乱码问题及解决办法
  • 【Advanced Windows Phone Programming】在windows phone 8中解码mp3 和编码pcm
  • JavaScript创建对象(五)——动态原型模式
  • Asp.Net Mvc + ComBoost.Mvc快速开发
  • Laravel Mix运行时关于es2015报错解决方案
  • 建站初级指南
  • 一个ViewGroup#dispatchDraw()中的NP分析
  • LINUX命令 cp: omitting directory 出现的问题解决办法
  • 枚举类的简单应用
  • 手把手教你启用Win10的Linux子系统(超详细)
  • [转载]C# Double toString保留小数点方法
  • 自动化部署打破混乱之墙 助力开发、运维、测试协同作战
  • spring restTemplate 上传数据流/字节数组
  • Windows下leapmotion中touchless的使用
  • Session丢失的问题!(转)
  • CSS相对定位
  • Java应用性能调优
  • ReactNative开发常用的三方模块
  • Spark RDD学习: aggregate函数
  • spring boot下thymeleaf全局静态变量配置
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 基于组件的设计工作流与界面抽象
  • 计算机常识 - 收藏集 - 掘金
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 小程序 setData 学问多
  • 优化 Vue 项目编译文件大小
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • ​虚拟化系列介绍(十)
  • (2022 CVPR) Unbiased Teacher v2
  • (4)事件处理——(7)简单事件(Simple events)
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (三)elasticsearch 源码之启动流程分析
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • **CI中自动类加载的用法总结
  • **PHP分步表单提交思路(分页表单提交)
  • .libPaths()设置包加载目录
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .net反编译工具
  • .NET下ASPX编程的几个小问题
  • /bin、/sbin、/usr/bin、/usr/sbin
  • :如何用SQL脚本保存存储过程返回的结果集
  • @Autowired注解的实现原理
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • @Valid和@NotNull字段校验使用
  • []使用 Tortoise SVN 创建 Externals 外部引用目录
  • [<事务专题>]
  • [20190416]完善shared latch测试脚本2.txt
  • [BZOJ2281][SDOI2011]黑白棋(K-Nim博弈)