绑定变量的使用
不使用绑定变量:
scott@ORCL>selectename from emp where empno=7788;
ENAME
----------
SCOTT
scott@ORCL>selectename from emp where empno=7369;
ENAME
----------
SMITH
sys@ORCL>selectsql_text,loads,sql_id from v$sqlarea where sql_text like 'select ename from empwhere empno=%';
SQL_TEXT LOADS SQL_ID
-------------------------------------------------------------------------------------------------------------------
selectename from emp where empno=7369 1 4s63dmxqzc2hg
selectename from emp where empno=7788 1 4b84jg8yc5nwa
使用绑定变量:
scott@ORCL>variablezbcxy number;
scott@ORCL>exec:zbcxy:=7788;
PL/SQL过程已成功完成。
scott@ORCL>selectename from emp where empno=:zbcxy;
ENAME
----------
SCOTT
scott@ORCL>exec:zbcxy:=7369;
PL/SQL过程已成功完成。
scott@ORCL>selectename from emp where empno=:zbcxy;
ENAME
----------
SMITH
sys@ORCL>select sql_text,loads,sql_id from v$sqlarea where sql_text like'select ename from emp where empno=%';
SQL_TEXT LOADS SQL_ID
----------------------------------------------------------------------------------------------------------------
selectename from emp where empno=:zbcxy 1 8y38u6k926y6h
在pl/sql中自动使用绑定变量(有些情况例外):
情况一:
scott@ORCL>createor replace procedure p_1(empno in number)
2 is
3 sql_text varchar2(100);
4 begin
5 sql_text:='select ename from emp whereempno='||empno;
6 execute immediate sql_text;
7 end;
8 /
过程已创建。
scott@ORCL>execp_1(7788);
PL/SQL过程已成功完成。
scott@ORCL>execp_1(7369);
PL/SQL过程已成功完成。
sys@ORCL>selectsql_text,loads,sql_id from v$sqlarea where sql_text like 'select ename from empwhere empno=%';
SQL_TEXT LOADS SQL_ID
---------------------------------------------------------------------------------------------------------------------
selectename from emp where empno=7369 1 4s63dmxqzc2hg
selectename from emp where empno=7788 1 4b84jg8yc5nwa
拼串的方式不走绑定变量
情况二:
scott@ORCL>createor replace procedure p_2(empno in number)
2 is
3 sql_text varchar2(100);
4 begin
5 sql_text:='select sal from emp where empno=:1';
6 execute immediate sql_text using empno;
7 end;
8 /
过程已创建。
scott@ORCL>execp_2(7788);
PL/SQL过程已成功完成。
scott@ORCL>execp_2(7369);
PL/SQL过程已成功完成。
sys@ORCL>selectsql_text,loads,sql_id from v$sqlarea where sql_text like 'select sal from empwhere empno=%';
SQL_TEXT LOADS SQL_ID
---------------------------------------------------------------------------------------------------------------
selectsal from emp where empno=:1 1 a29ya1gs6s7xq
情况三:
scott@ORCL>createor replace procedure p_3(enum in number)
2 is
3 v_deptno varchar2(30);
4 begin
5 select deptno||'is 2033' into v_deptno from emp where empno=enum;
6 dbms_output.put_line(v_deptno);
7 end;
8
9 /
过程已创建。
scott@ORCL>execp_3(7788);
20is2033
PL/SQL过程已成功完成。
scott@ORCL>execp_3(7369);
20is2033
PL/SQL过程已成功完成。
scott@ORCL>execp_3(7499);
30is2033
PL/SQL过程已成功完成。
sys@ORCL>selectsql_text,loads,sql_id from v$sqlarea where sql_text like '%2033%';
SQL_TEXT LOADS SQL_ID
---------------------------------------------------------------------------------------------------------------------------------
selectsql_text,loads,sql_id from v$sqlarea where sql_text like '%2033%' 1 2p7hsnpb9hgmv
SELECTDEPTNO||'is 2033' FROM EMP WHERE EMPNO=:B1 1 2tzyfarcukgq7
- 06-16卡巴斯基郑启良:支持信创发展是卡巴斯基的重要使命
- 06-16访问管理是确保现代工作场所安全的的五个关键原因
- 06-16零信任安全的演变:彻底改变网络安全策略
- 06-16GitHub上值得关注的20个网络安全项目
- 06-16英国曼彻斯特大学遭遇网络攻击,机密数据或遭窃!
- 06-16调查表明广告软件推送恶意软件感染了六万多个安卓应用程序
- 06-16微软向美国政府提供GPT的大模型,安全性如何保证?
- 06-16如何保护OT环境免受安全威胁?
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 12-05亚马逊推出新一代基础模型 任意模态生成大模
- 12-05OpenAI拓展欧洲业务 将在苏黎世设立办公室
- 12-05微软质疑美国联邦贸易委员会泄露信息 督促其
- 12-05联交所取消宝宝树上市地位 宝宝树:不会对公
- 12-04企业微信致歉:文档打开异常已完成修复