PL/SQL中直接写SQL语句和用EXECUTE IMMEDIATE方法的区别

在PL/SQL中在执行SQL语句时可以直接写SQL或者可以把一个SQL语句拼成一个字符串,如下:

select * from dual;

v_sql:='select * from dual'; EXECUTE IMMEDIATE v_sql;

一般来说直接写SQL的性能是高于拼字符串的,因为如果执行拼字符串的需要内部自动调动oracle机制,先解析字符串映射成SQL语句然后再执行。

但是拼SQL的方式有好处。即SQL语句是一个字符串可以动态拼接,根据不同的条件来改变SQL语句,这是直接写SQL所不能达到的。

拼SQL还有个好处就是 v_sql:='select * from tables t where t.c_date=:1 and t.name=:2';  EXECUTE IMMEDIATE v_sql USING '20130304','xiaoming';

可以动态的对参数传递值,这是最大的优势。

在PL/SQL中定义一个变量  v_date varchar2,如果直接写SQL可以 直接写变量  v_date

如果是拼SQL则是 v_sql:='select * from tables t where t.c_date='''||v_date||'''';  这样在执行的时候打印出来的SQL就是 select * from tables t where t.c_date=’20130304‘'

如果是v_sql:='select * from tables t where t.c_date='||v_date||'';  这样在执行的时候打印出来的SQL就是 select * from tables t where t.c_date=20130304;  这里c_date如果是varchar2类型,则这里oracle要隐式的进行数字到字符串的转换  ,影响性能

转载于:https://www.cnblogs.com/ranrongzhen/p/6807900.html

PL/SQL中直接写SQL语句和用EXECUTE IMMEDIATE方法的区别相关推荐

  1. mysql 查询后根据值的不同进行判断与修改,SQL中的条件判断语句(case when zhen)用法

    需求: mysql 查询后根据值的不同进行判断与修改 语法结构: SQL中的条件判断语句(case when zhen)用法 SELECT A.品号,属性,        CASE           ...

  2. 解决数据倾斜一:RDD执行reduceByKey或则Spark SQL中使用group by语句导致的数据倾斜

    一:概述 有的时候,我们可能会遇到大数据计算中一个最棘手的问题--数据倾斜,此时Spark作业的性能会比期望差很多.数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的 ...

  3. 在程序开发中怎样写SQL语句可以提高数据库的性能

    1.首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个10万条记录的表中查1条记录 ...

  4. 【8008】解决idea中JDBC写sql语句出现报错Unable to resolve table ‘表名‘?

    [8008]解决idea中写sql语句出现报错Unable to resolve table '表名'? 问题背景: 昨天使用JDBC连接数据库中写sql语句,一直爆红,真服了,虽然能运行,但看着不舒 ...

  5. SQL中的CASE WHEN语句

    有这样一道面试题: 一张表数据如下 1900-1-1 胜 1900-1-1 胜 1900-1-1 负 1900-1-2 胜 1900-1-2 胜 写出一条SQL语句,使检索结果如下: 胜 负 1900 ...

  6. SQL COOKLIST:写SQL中的习惯语法暗坑

    O'REILLY有若干以"COOKBOOK"命名的"动物书",讲的是写一些语言代码时被称作"语法糖"的黑科技."语法糖" ...

  7. SQL 中条件、循环语句的应用整理

    引言: 作为程序员一族,无论是任何语言,最基本的语句都离不开顺序.条件(选择).循环这三大逻辑结构,有些知识不经常使用的话就会模糊,所以即使是很简单的知识点也想做个总结. 1.条件分支(SQL中的条件 ...

  8. SQL中SELECT 和 SELECT * 语句

     SELECT 语句用于从表中选取数据. 结果被存储在一个结果表中(称为结果集). SQL SELECT 语法 SELECT 列名称 FROM 表名称 以及: SELECT * FROM 表名称 ...

  9. 深入理解 SQL 中的 Grouping Sets 语句

    前言 SQL 中 Group By 语句大家都很熟悉,根据指定的规则对数据进行分组,常常和聚合函数一起使用. 比如,考虑有表 dealer,表中数据如下: id (Int) city (String) ...

  10. sql中几种删除语句的比较和基础用法

    sql中有三种删除语句 delete.drop.truncate 1.delete 基础用法:delete from table(表名) [where] 用法理解:用于删除有明确定义的数据或者整个表的 ...

最新文章

  1. (0045) iOS 开发之MBProgressHUD 源码学习
  2. think in baidu
  3. Angular实现图片点击缩放组件
  4. java md5加密解密_java MD5加密解密 | 学步园
  5. 微信小程序wx.getUserProfile
  6. android rom 属性 分辨率,ROM的 build.prop参数详解
  7. 中国数据库产业的“高地战事”
  8. Restful风格实现页面之间跳转PageController
  9. 【leetcode】Copy List with Random Pointer (hard)
  10. CDH使用Solr实现HBase二级索引
  11. Excel-工作周报(月报)【改良版】
  12. iPhone描述文件怎么用,过期如何处理
  13. SQL查询语句大全集锦
  14. 计算机科学美国研究生排名,最新出炉 2018年USNews美国大学研究生计算机科学专业排名榜单...
  15. office2010在安装过程中出错Error 1935的解决方法
  16. 在ubuntu用audacity把音频转换成256kbps,单声道。(亲测有效)
  17. 马斯洛需求层次理论与消费者需求
  18. 诺禾-实验技巧之WB篇
  19. 关于*.md文件打开的问题及图片丢失
  20. php path separator,php DIRECTORY_SEPARATOR常量介绍

热门文章

  1. 8B/10B编码(转)
  2. 一个伤心人的帖和一群搞笑人的跟帖
  3. iOS The document “(null)” requires Xcode 8.0 or later.解决办法
  4. PDF Expert mac使用教程:压缩pdf文件大小
  5. Macbook使用技巧:如何在外部显示器上获得4K 60 FPS
  6. 2020杭电多校6 1006A Very Easy Graph Problem血泪史
  7. CF-1208D-线段树和树状数组双解
  8. Emgu-WPF学习使用-Rectangle识别
  9. springboot+mybatis+redis实现分布式缓存
  10. nodejs安装node-gyp 报错