返回顶部
首页 > 资讯 > 数据库 >Oracle之绑定变量 2
  • 928
分享到

Oracle之绑定变量 2

2024-04-02 19:04:59 928人浏览 独家记忆
摘要

绑定变量(bind variable)我们经常在写plsql中用到,那我们承接上一节的来看看在plsql中静态sql和动态sql在绑定变量的区别declare     

绑定变量(bind variable)我们经常在写plsql中用到,那我们承接上一节的来看看在plsql中静态sql和动态sql在绑定变量的区别

declare
    v_value_a varchar2(100);
    v_value_b varchar2(100);
    v_name  varchar2(50);
begin
    v_value_a := 'SMITH';
    select e.enameinto v_name from scott.emp e where e.ename = v_value_a;
    v_value_b := 'ALLEN';
    select e.enameinto v_name from scott.emp e where e.ename = v_value_b;
end;
/

查询v$sql

select * from v$sql d where d.SQL_TEXT like '%%';

Oracle之绑定变量 2

这里看到只产生了一条sql_id,oracle会自动把变量v_value_a,v_value_b换成绑定变量:B1.


再来看看动态sql

PLSQL_1:
declare
    v_value_a varchar2(100);
    v_value_b varchar2(100);
    v_name  varchar2(50);
begin
    v_value_a := 'SMITH';
    
    v_value_b := 'ALLEN';

    execute immediate 'select e.ename from scott.emp e where e.ename = :xxx' 
    using v_value_a;
    
    execute immediate 'select e.ename from scott.emp e where e.ename = :yyy' 
    using v_value_b;
end;
/

查询v$sql

select * from v$sql d where d.SQL_TEXT like '%%';

Oracle之绑定变量 2

这里可以看到动态sql就是以执行sql为文本进行解析的,如果两个sql有不同就是不同的sql语句。


2.获取绑定变量的值

那我们可以得到绑定的变量的值吗?通过v$sql_bind_capture就可以查询到

SQL_1:
select d.NAME, d.POSITioN, d.SQL_ID, value_string
  from v$sql_bind_capture d
 where d.SQL_ID in
       (select sql_id from v$sql v where v.SQL_TEXT like '%%')

Oracle之绑定变量 2

这时我们看到绑定变量的值是上文看到的v_value_a和v_value_b的值。

接着往下走,改变v_value_a的值:

v_value_a := 'CLARK';

执行PLSQL_1,SQL_1

Oracle之绑定变量 2

绑定变量的值并没有发生变化,这时为什么呢?

  • v$sql_bind_capture这个视图是一个快照视图,并不会保存所有执行过的SQL的绑定变量,只会记录最近一次捕获到的绑定值,而已每次捕获都是有间隔时间的。ORACLE为我们提供了一个隐含参数_cursor_bind_capture_interval(默认900s),这个就是控制绑定变量抓取频率的参数。

  • 如果绑定变量是DATE类型则无法直接查看到的。


您可能感兴趣的文档:

--结束END--

本文标题: Oracle之绑定变量 2

本文链接: https://lsjlt.com/news/36476.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Oracle之绑定变量 2
    绑定变量(bind variable)我们经常在写plsql中用到,那我们承接上一节的来看看在plsql中静态sql和动态sql在绑定变量的区别declare     ...
    99+
    2024-04-02
  • Oracle绑定变量
    什么时绑定变量? Oracle中每一个提交的SQL语句都会经历解析,解析分为两种一种是软解析,这种解析在执行sql的时候直接到share pool中取出执行计划即 可,不是特别占用资源。而另一种硬解析,整个过程需要解析,制定执行路径,...
    99+
    2021-01-29
    Oracle绑定变量 数据库入门 数据库基础教程
  • Oracle绑定变量窥探
    随着具体输入值的不同,SQL的where条件的可选择率(Selectivity)和结果集的行数(Cardinality)可能会随之发生变化,而Selectivity和Cardinalit...
    99+
    2024-04-02
  • Oracle 学习之性能优化(三)绑定变量
      根据Oracle 学习之性能优化(二)游标中的描述,我们知道如下两条语句是不共享的。select * from emp where&...
    99+
    2024-04-02
  • Oracle 未绑定变量SQL查询
    sqlplusSQL>  set numw 30select FORCE_MATCHING_SIGNATURE, count(1)  from v$sql wher...
    99+
    2024-04-02
  • oracle中关于替代变量,accpt,绑定变量,字符变量
    此文档介绍两个事情,一个是替代变量,另一个就是了解一下硬解析和软解析对于变量来说declare定义的好还是variable定义的好 在oracle 中,对于一个提交的sql语句,存在两种可选的解析...
    99+
    2024-04-02
  • Oracle 10g中一个关于绑定变量和非绑定变量的测试对比
    首先创建测试表并记录解析统计数据:   进行循环插入数据,以下代码并未使用绑定变量: 发现在增加了11个硬解析. 查询v$sqlarea视图,可以找到这些不能共享的SQL...
    99+
    2024-04-02
  • 怎么使用ORACLE中的绑定变量
    这篇文章主要讲解了“怎么使用ORACLE中的绑定变量”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用ORACLE中的绑定变量”吧!一、绑定变量的作用:...
    99+
    2024-04-02
  • C#Oracle并非所有变量都已绑定
    在C#中,Oracle数据库并不是所有变量都已绑定。在编写SQL查询时,可以使用绑定变量来代替具体的值,这样可以提高查询的性能和安全...
    99+
    2023-08-18
    C#
  • Oracle数据倾斜导致的问题-有绑定变量
    Oracle 数据倾斜导致的问题 - 有绑定变量 参考整理---<< 恩墨年货   -SQL 与性能优化   >> 场景二: ...
    99+
    2024-04-02
  • MySQL中的游标和绑定变量
    目录一、mysql游标简介二、绑定变量2.1 绑定变量的优化2.2 SQL接口的绑定变量2.3 绑定变量的限制一、MySQL游标简介 MySQL在服务器端提供只读的、单向的游标,而且只能在存储过程或者更底层的客户端API...
    99+
    2022-08-17
    MySQL游标 MySQL绑定变量 MySQL变量
  • 怎么解析Cursor和绑定变量
    这篇文章将为大家详细讲解有关怎么解析Cursor和绑定变量,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。如下是我就这次演讲的内容做的一点概括,里面也包含了我...
    99+
    2024-04-02
  • 使用remove_constants工具查看Oracle是否使用绑定变量
    这个也是Tom大神写的工具。 https://asktom.oracle.com/pls/asktom/fp=100:11:::::P11_QUESTION_ID:1163635055580 下面模拟没有...
    99+
    2024-04-02
  • 捕获非绑定变量的SQL语句
    之前一直用如下sql来查看非绑定变量的sql,但是不准select hash_value, substr(sql_text, 1, 80) &nb...
    99+
    2024-04-02
  • 利用FORCE_MATCHING_SIGNATURE捕获非绑定变量SQL
    sql text 相近的sql FORCE_MATCHING_SIGNATURE 相同 因此可以使用下面的语句查找没有绑定变量的SQL SELECT *  &...
    99+
    2024-04-02
  • SQL Developer中如何使用绑定变量
    这篇文章将为大家详细讲解有关SQL Developer中如何使用绑定变量,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 Toad是个强大的工...
    99+
    2024-04-02
  • PLSQL并非所有变量都已绑定
    在PL/SQL中,所有变量并不都需要绑定。PL/SQL中的变量分为两种类型:绑定变量和未绑定变量。绑定变量是在编译时绑定到特定值的变...
    99+
    2023-09-27
    PLSQL
  • Gridview根据C#变量值绑定列值
    在ASP.NET中,你可以使用GridView的`RowDataBound`事件来根据C#变量值动态绑定列的值。首先,在GridVi...
    99+
    2023-09-27
    C#
  • oracle如何查找一段时间内的非绑定变量sql
    这篇文章主要介绍了oracle如何查找一段时间内的非绑定变量sql,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。查找一段时间内的非绑定变量s...
    99+
    2024-04-02
  • 怎么使变量进行Flex数据绑定
    小编给大家分享一下怎么使变量进行Flex数据绑定,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Flex数据绑定有关Flex数据绑定的知识收集整理了一下:Flex数...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作