[20121102]PLSQL中的绑定变量.txt

简介: [20121102]PLSQL中的绑定变量.txt    以前曾经遇到一个sql语句提交给开发,开发没有找到,最终确定是问题语句在PLSQL中,实际上PLSQL转化为大写,加上自己没有注意.
[20121102]PLSQL中的绑定变量.txt

    以前曾经遇到一个sql语句提交给开发,开发没有找到,最终确定是问题语句在PLSQL中,实际上PLSQL转化为大写,
加上自己没有注意.实际上SQL语句在PLSQL中,一些好像被"格式化一样",我举一个例子:

1.测试环境:
SQL> select * from v$version where rownum

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

SQL> select * from dept ;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        50 TEST           TEST
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

2.建立测试例子:

create or replace procedure test_bind
as
v_deptno  number;
v_dname   varchar2(14);
v_loc     varchar2(13);
v_deptno1  number;
v_dname1   varchar2(14);
v_loc1     varchar2(13);

cursor c_dept is select deptno,dname from dept order by deptno;

begin
 open c_dept;
loop
 fetch c_dept into v_deptno,v_dname;
 exit when c_dept%NOTFOUND;
 select loc into v_loc from dept where deptno=v_deptno and dname=v_dname;

    Select loc into v_loc from dept
where deptno=v_deptno 
and dname=v_dname;

    v_deptno1 := v_deptno;
    v_dname1  := v_dname;

    Select loc into v_loc from dept where deptno=v_deptno1
and dname=v_dname;

Select loc
into v_loc from dept where deptno=v_deptno
and dname=v_dname1;

Select
loc 
into v_loc1 from dept where deptno=v_deptno1
and dname=v_dname1;

end loop;
end;
/

3.测试:
alter session set events '10046 trace name context forever,level 12';
exec test_bind
alter session set events '10046 trace name context off';

4.查看跟踪文件:
SQL ID: fq1jkwcmsx57d
Plan Hash: 2852011669
SELECT LOC
FROM
 DEPT WHERE DEPTNO=:B2 AND DNAME=:B1

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        5      0.00       0.00          0          0          0           0
Execute     25      0.00       0.00          0          0          0           0
Fetch       25      0.00       0.00          0          2          0          25
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total       55      0.00       0.00          0          2          0          25

Misses in library cache during parse: 1
Misses in library cache during execute: 1
Optimizer mode: ALL_ROWS
Parsing user id: 84     (recursive depth: 1)

Rows     Row Source Operation
-------  ---------------------------------------------------
      1  TABLE ACCESS BY INDEX ROWID DEPT (cr=2 pr=0 pw=0 time=0 us cost=1 size=18 card=1)
      1   INDEX UNIQUE SCAN PK_DEPT (cr=1 pr=0 pw=0 time=0 us cost=0 size=0 card=1)(object id 73200)

--可以发现全部换成了大写,并且都转化为1条语句,分析5次,共执行了25,不管sql语句如何写,带入的参数如何,都转化为:B2和:B1.


目录
相关文章
|
数据格式
降水数据的简单介绍:GPM(Imerg/GSMap)、TRMM(3B42/3B43)、FY(2/3/4)、PERSIANN(CDR)
降水数据的简单介绍:GPM(Imerg/GSMap)、TRMM(3B42/3B43)、FY(2/3/4)、PERSIANN(CDR)
944 0
|
4月前
|
数据采集 Web App开发 JavaScript
Python 爬虫动态 JS 渲染与无头浏览器实战选型指南
Python 爬虫动态 JS 渲染与无头浏览器实战选型指南
|
NoSQL Java Linux
Java Spring Data Redis实战与配置参数详解 application.properties
Java Spring Data Redis实战与配置参数详解 application.properties。Java Spring Boot 2.0连接Redis服务器,可以在配置文件 application.properties中修改控制参数,包括安全、连接池、超时等参数。
12294 0
|
2月前
|
人工智能 自然语言处理 开发工具
Codex 实践系列 Vol.03:Codex 那些好用的 slash command
本文是Codex系列第三篇,聚焦真实项目协作:以AI志愿填报Demo为案例,详解`/status`、`/goal`、`/plan`等核心slash命令的实战用法——从确认环境、设定目标、规划修改,到聚焦文件、审查diff、复查逻辑、压缩长对话,系统提升AI编程的可控性与工程规范性。
259 2
Codex 实践系列 Vol.03:Codex 那些好用的 slash command
|
6月前
|
存储 移动开发 小程序
基于Uniapp的会员卡储值消费系统开发实践
本文介绍如何用Uniapp快速搭建轻量化会员卡储值消费系统,适配餐饮、校园、社区等线下场景。依托跨端能力,一套代码覆盖小程序/H5/App;聚焦自助充消、分级折扣、交易溯源、消息通知四大核心功能,兼顾易用性与低维护成本,并推荐开源项目助力快速落地。
511 1
|
2月前
|
人工智能 数据可视化 安全
我用多模态AI直接把UI稿丢进去,它自己完成了所有页面的探索式测试
关注「霍格沃兹软件测试开发」公众号,回复「资料」领取AI测试开发技术合集。本文揭秘大厂落地实践:基于多模态大模型,将UI设计稿自动转化为探索式测试能力,零脚本覆盖200+页面、发现47个传统漏测Bug,真正实现“丢稿即测”。
|
7月前
|
人工智能 数据挖掘 程序员
深度解析|非技术人的AI Agent黄金职业路线:做智能时代的“超级连接者”
本文打破“只有程序员才能参与AI革命”的迷思,专为运营、市场、销售、产品等非技术人才设计,揭示如何凭借业务理解与软技能,转型为AI Agent生态中的“赋能者”与“运营者”,实现职业价值跃升。(239字)
827 1
|
3月前
|
人工智能 运维 安全
7×24小时在岗的虚拟团队 QoderWake AI数字员工平台全流程部署与实战指南
在数字化办公与AI技术深度融合的当下,传统单人作业、小型团队人力不足、跨岗位协作效率低等问题,成为制约开发者、运营从业者以及创业者发展的常见瓶颈。AI数字员工的出现,打破了人力时间、地域与岗位数量的限制,能够全天候承接标准化、流程化、高重复性的工作任务,成为提升组织效能的核心工具。QoderWake是Qoder团队倾力打造的生产级AI数字员工平台,区别于普通对话式机器人,它以**Harness-First**架构为核心,内置六大类主流岗位模板与上百项专业技能,支持多名数字员工协同办公、长期记忆沉淀与自主能力进化,是目前面向真实职场场景的专业化AI智能体平台。
462 0
|
缓存 开发者
如何在Performance面板中查看缓存相关信息?
如何在Performance面板中查看缓存相关信息?
508 56
|
人工智能 算法 开发工具
快手封号一般封多久?
一、封禁时长梯度设计原理