3、定变量的实质就是用于替代sql语句中的常量的替代变量。绑定变量能够使得每次提交的sql语句都完全一样。 1.sqlplus中如何使用绑定变量,可以通过variable来定义[c-sharp]viewplaincopyprint?1.SQL> select * from tt where id=1; 2. 3.ID NAME 4.---------- ---------------------------------------- 5.1 test 6. 7.SQL> select * from
4、tt where id=2; 8. 9.ID NAME 10.---------- ---------------------------------------- 11.2 test 12. 13.SQL> variable i number; 14.SQL> exec :i :=1; 15. 16.PL/SQL 过程已成功完成。 17. 18.SQL> select *from tt where id=:i; 19. 20.ID NAME 21.---------- ----
5、------------------------------------ 22.1 test 1. 2.SQL> exec :i :=2; 3. 4.PL/SQL 过程已成功完成。 5. 6.SQL> select *from tt where id=:i; 7. 8.ID NAME 9.---------- ---------------------------------------- 10.2 test 11. 12.SQL> print i; 13. 14.I 15.
6、---------- 16.2 17. 18.SQL> select sql_text,parse_calls from v$sql where sql_text like 'select * from t 19.t where id=%'; 20. 21.SQL_TEXT PARSE_CALLS 22.------------------------------------------------------------ ----------- 23.select * from tt wh
7、ere id=2 1 24.select * from tt where id=1 1 25.select * from tt where id=:i 2 26.SQL> 从上面试验发现绑定变量i的使用使查询id=1和id=2的sqlselect*fromttwhereid=:i得以重复使用,从而避免了hardparse,这里的PARSE_CALLS=2包括了一次softparse2.前两天看到有人在pub上问在sqlplus中通过define和variable定义的变量的区别。其实define定义
8、的我理解不是变量而是字符常量,通过define定义之后,在通过&或者&&引用的时候不需要输入了,仅此而已。oracle在执行的时候自动用值进行了替换;而variable定义的是绑定变量,上面已经提到。[c-sharp]viewplaincopyprint?1.C:>sqlplus xys/manager 2.SQL*Plus: Release 11.1.0.6.0 - Production on 星期二 4月