iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >怎么使用ORACLE中的绑定变量
  • 293
分享到

怎么使用ORACLE中的绑定变量

2024-04-02 19:04:59 293人浏览 薄情痞子
摘要

这篇文章主要讲解了“怎么使用oracle中的绑定变量”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用ORACLE中的绑定变量”吧!一、绑定变量的作用:

这篇文章主要讲解了“怎么使用oracle中的绑定变量”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用ORACLE中的绑定变量”吧!

一、绑定变量的作用

:variable_name(字母,数字,或者字母数字组合)

有效降低硬解析

二、绑定变量的典型用法

sql

var x number;

exec :x :=7876;

select * from emp where empno = :x;

pl/sql中,例如

declare

  vc_name varchar2(10);

 begin

    execute immediate 'select ename from emp where empno= :1' into vc_name using 7876;

    dbms_output.put_line(vc_name);

 end;

所以在pl/sql中绑定变量的标准语法为:

execute immediate 【使用绑定变量的语句】  using 对应绑定变量的具体输入值;

PL/SQL中DML语句的绑定变量典型用法

declare

 v_sql1  varchar2(50);

 v_sql2  varchar2(50);

 v_num1  number;

 v_num2  number;

begin

  v_sql1 := 'insert into emp(empno,ename,sal) values(:1,:1,:1)';

  execute immediate v_sql1 using 8001,'jack',1000;

  v_num1 :=sql%rowcount;  --sql%rowcount中的sql是oracle的内部游标,rowcount的意思是之前的dml sql语句影响的多少行数据

  execute immediate v_sql1 using 8002,'mike',2000;

  v_num2 :=sql%rowcount;

  dbms_output.put_line(v_num1+v_num2);

  end;

动态sql中也可以使用绑定变量,returning 这个关键字可以和带绑定变量的SQL联用,其作用是将受该SQL影响的行记录字段取出来。

三、pl/sql中批量绑定的典型用法

批量绑定:一次性处理一批数据

pl/sql引擎是指在Oracle在数据库中处理pl/sql代码中除了SQL语句外所有剩余部分(如变量,循环,数组,赋值)的子系统

批量绑定可以有效减少SQL引擎和pl/sql引擎的交互次数

理论上来说,pl/sql中只要执行SQL语句,就会有这两个引擎的交互,实际上这两个引擎交互产生的性能影响主要体现在以下两个方面

1、当显式游标或者参考游标需要循环执行fetch操作时,这时循环由pl/sql执行,fetch中的SQL由SQL引擎执行,这样每fetch一条记录,就需要两个引擎交互一次

2、当显式游标或者参考游标的循环内部需要执行SQL语句,跟上面一样,也是每执行一次,需要交互一次

所以当fetch一批记录,或者一次执行一批SQL,就会大大提高pl/sql的效率

批量fetch对应的语法

fetch cursorname bulk colletc into 【自定义的数组】 <limit cn_batch_size>

pl/sql中批量执行一批SQL的语法

forall i in 1..[自定义数组长度】

  execute immediate [带绑定变量的sql] using [绑定变量输入值】

declare

  cur_emp sys_refcursor;

  v_sql varchar2(4000);

  type namelist is table of varchar2(10);

  enames namelist;

  cn_batch_size constant pls_integer :=1000;

begin

  v_sql:= 'select ename from emp where empno> :1';

  open cur_emp for v_sql using 7900;

  loop

    fetch cur_emp bulk collect into enames limit cn_batch_size;

    for i in 1..enames.count loop

      dbms_output.put_line(enames(i));

      end loop;

    exit when enames.count<cn_batch_size;

    end loop;

    close cur_emp;

    end;

四、绑定变量分级(bind graduation)

根据文本型绑定变量的定义长度而将这些绑定变量分成四级

1、32字节(bytes)以内第一级 分配32字节

2、33--128字节第二级   分配120字节

3、129--2000字节第三级 分配2000字节

4、2000字节以上第四级 ,按实际绑定变量大小,小于等于2000则分配2000字节,大于2000则分配4000字节

注意 oracle只对文本型绑定变量分级,数值型的统一分配22字节,另外一个重要知识点,在pl/sql中,要是文本绑定变量的定义长度发生了变化,因为child cursor 里存储了该绑定变量的长度和类型,所以这个sql就会新做硬解析。因此,为了避免不必要的硬解析,在pl/sql中,定义文本绑定变量是,最好统一定义长度,比如varchar2(4000);

五、目标sql中的绑定变量不宜过多

六、如何得到已执行sql中绑定变量的值

V$SQL_BIND_CAPTURE,如果已经被aged out 除shared pool,则可以看另外两张dba_hist_sqlstat,dba_hist_sqlbind

满足下列条件之一,含有绑定变量的目标sql中的绑定变量值会被捕获,然后可以从v$sql_bind_capture中查询到

1、该sql做的是硬解析

2、该SQL做的是软解析或软软解析,这是每隔15分钟,捕获一次值

注意对绑定变量值的捕获只在where 语句中的绑定变量,其他比如insert中的值不会被捕获

感谢各位的阅读,以上就是“怎么使用ORACLE中的绑定变量”的内容了,经过本文的学习后,相信大家对怎么使用ORACLE中的绑定变量这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: 怎么使用ORACLE中的绑定变量

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么使用ORACLE中的绑定变量
    这篇文章主要讲解了“怎么使用ORACLE中的绑定变量”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用ORACLE中的绑定变量”吧!一、绑定变量的作用:...
    99+
    2024-04-02
  • SQL Developer中如何使用绑定变量
    这篇文章将为大家详细讲解有关SQL Developer中如何使用绑定变量,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 Toad是个强大的工...
    99+
    2024-04-02
  • 怎么使变量进行Flex数据绑定
    小编给大家分享一下怎么使变量进行Flex数据绑定,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Flex数据绑定有关Flex数据绑定的知识收集整理了一下:Flex数...
    99+
    2023-06-17
  • SQL*Plus中怎么利用DATE类型绑定变量
    这篇文章将为大家详细讲解有关SQL*Plus中怎么利用DATE类型绑定变量,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 SQ...
    99+
    2024-04-02
  • 怎么解析Cursor和绑定变量
    这篇文章将为大家详细讲解有关怎么解析Cursor和绑定变量,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。如下是我就这次演讲的内容做的一点概括,里面也包含了我...
    99+
    2024-04-02
  • sql查找未使用绑定变量的语句
    本篇内容主要讲解“sql查找未使用绑定变量的语句”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“sql查找未使用绑定变量的语句”吧!一、查找方法:从ORACLE1...
    99+
    2024-04-02
  • C#Oracle并非所有变量都已绑定
    在C#中,Oracle数据库并不是所有变量都已绑定。在编写SQL查询时,可以使用绑定变量来代替具体的值,这样可以提高查询的性能和安全...
    99+
    2023-08-18
    C#
  • C++中怎么定义和使用变量
    这篇文章将为大家详细讲解有关C++中怎么定义和使用变量,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++定义变量有两种主要的做法 符号常量 (#define) 常值变量 (const)符号...
    99+
    2023-06-17
  • CSS中怎么定义变量并使用
    小编给大家分享一下CSS中怎么定义变量并使用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!CSS 中原生的变量定义语法是:--,变量使用语法是:var(--) ;...
    99+
    2023-06-27
  • Oracle数据倾斜导致的问题-有绑定变量
    Oracle 数据倾斜导致的问题 - 有绑定变量 参考整理---<< 恩墨年货   -SQL 与性能优化   >> 场景二: ...
    99+
    2024-04-02
  • PL/SQL的绑定变量是什么意思
    PL/SQL的绑定变量是在SQL语句中使用冒号(:)来引用的变量,这些变量在执行SQL语句时由应用程序或用户提供。绑定变量可以在SQ...
    99+
    2024-05-07
    PL/SQL
  • 利用FORCE_MATCHING_SIGNATURE捕获非绑定变量SQL
    sql text 相近的sql FORCE_MATCHING_SIGNATURE 相同 因此可以使用下面的语句查找没有绑定变量的SQL SELECT *  &...
    99+
    2024-04-02
  • react怎么定义变量并使用
    这篇“react怎么定义变量并使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“react怎么定义变量并使用”文章吧。rea...
    99+
    2023-07-05
  • oracle如何查找一段时间内的非绑定变量sql
    这篇文章主要介绍了oracle如何查找一段时间内的非绑定变量sql,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。查找一段时间内的非绑定变量s...
    99+
    2024-04-02
  • Java中变量怎么使用
    这篇文章主要介绍了Java中变量怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。为了在Java中存储一个数据,必须将它容纳在一个变量之中。而数据类型决定了一个变量可以赋给...
    99+
    2023-06-03
  • vue动态绑定ref(使用变量)以及获取方式
    目录vue动态绑定ref及获取一起来看下代码吧ref三种使用方法refvue动态绑定ref及获取 正常情况,我们需要在vue中获得某个dom或者组件,我们会通过绑定 ref 然后通过...
    99+
    2024-04-02
  • 在 MySQL 中使用用户定义的变量
    让我们了解什么是用户变量以及如何在 MySQL 中使用它们。我们还将看到规则 -用户变量被写为@var_name。这里,“var_name”指的是变量名,由字母数字字符、.、_和$组成。用户变量名可以包含其他字符(如果被引号引起来)作为字符...
    99+
    2023-10-22
  • c#进度条绑定变量的方法是什么
    在C#中,可以使用`ProgressBar`控件来显示进度条。要绑定进度条的值到一个变量,可以使用`DataBinding`来实现。...
    99+
    2023-09-28
    c#
  • javascript中怎么定义变量
    本篇内容介绍了“javascript中怎么定义变量”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • PHP中怎么使用可变变量名
    本篇文章为大家展示了PHP中怎么使用可变变量名,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。有时候PHP的可变变量名会给编程带来很大的方便。也就是说变量名可以被动态的命名和使用。通常变量通过下面这样...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作