【oracle】绑定变量

F 1130-02 绑定变量
参考:
oracle 绑定变量(bind variable)
http://wenku.baidu.com/view/5ea5f1fa83d049649a665836.html?from=search
使用绑定变量的一点点总结!
http://wenku.baidu.com/view/9cd65005284ac850ad0242b0.html?from=search
Oracle数据库的绑定变量特性及应用
http://wenku.baidu.com/view/92be30c24028915f804dc280.html?from=search


通过查看session的trace日志,可以查看sql和plsql的解析parse。
1.打开session的trace日志
alter session set sql_trace = true;
2.根据sid找到会话的 spid 和 tracefile
select
s.sid,s.serial#,s.osuser,s.program,s.paddr,
p.addr,p.spid,p.tracefile
from v$session s,v$process p
where p.addr = s.paddr
and s.sid = 11;


绑定变量的作用:重复使用执行计划
【例1】动态绑定变量:用关键字 variable 声明的变量
select distinct sid from v$mystat; --来自plustrace role 的权限
alter session set sql_trace = true;

set serveroutput on;
1.定义
variable vb_emp_id number;
variable vb_cnt number;
variable vb_statis_date number;
variable vb_weekend number;
2.赋值
execute :vb_emp_id := 3;
execute :vb_statis_date := 20151209;
3.使用
--3.1在DML语句中
update tab_emp set emp_salary =emp_salary*1.2 where emp_id = :vb_emp_id;
commit;
--3.2在过程,方法参数中使用
execute prc_getcnt(5,:vb_cnt);
print vb_cnt; --使用print时,引用绑定变量无需带冒号
execute dbms_output.put_line(':vb_cnt='||:vb_cnt);
execute :vb_weekend := fnc_get_weekend(:vb_statis_date);
print vb_weekend;

alter session set sql_trace = false;


【例2】静态绑定变量:oracle会自动转换为绑定变量的变量
select distinct sid from v$mystat;
alter session set sql_trace = true;

set serveroutput on;
declare
vi_emp_id integer;
vi_date integer;
vi_weekend integer;
begin
vi_emp_id := 3; --1)PLSQL_BLOCK中的普通变量
vi_date := 20151209;
for i in -7..-1 loop
vi_weekwend := fnc_get_weekend(vi_date+i); --2)参数数列表中的参数
dbms_output.put_line('i='||i||',vi_date='||vi_date||',vi_weekend='||vi_weekend); --3)for循环中的循环计数器
end loop;
end;
/

alter session set sql_trace = false;


TCP端口号范围 : 1024 ~ 65535

tar解压到指定目录:使用参数 -C
tar -zxvf 01.tar.gz -C ./zzh01

PLSQL Developer 调试子程序:
选中 子程序——右击——ReCompile
选中 子程序——右击——Test
Debug——Toggle Breakpoint

原文地址:https://www.cnblogs.com/greenZ/p/8721893.html