作者: qzj_jo2005 发表日期: 1207734180
没有绑定参数sql
- set timing on
- declare
- type rc is ref cursor;
- l_rc rc;
- l_dummy all_objects.object_name%type;
- l_start number default dbms_utility.get_time;
- begin
- for i in 1 .. 1000
- loop
- open l_rc for
- 'select object_name from all_objects
- where object_id ='||i;
- fetch l_rc into l_dummy;
- close l_rc;
- end loop;
- dbms_output.put_line(l_dummy);
- dbms_output.put_line(round((dbms_utility.get_time-l_start)/100,2)||'seconds...');
- end;
- /
- SQL>
- PL/SQL procedure successfully completed
- Executed in 115.469 seconds
绑定参数sql
- set timing on
- declare
- type rc is ref cursor;
- l_rc rc;
- l_dummy all_objects.object_name%type;
- l_start number default dbms_utility.get_time;
- begin
- for i in 1 .. 1000
- loop
- open l_rc for
- 'select object_name from all_objects
- where object_id =:x'
- using i;
- fetch l_rc into l_dummy;
- close l_rc;
- end loop;
- dbms_output.put_line(l_dummy);
- dbms_output.put_line(round((dbms_utility.get_time-l_start)/100,2)||'seconds...');
- end;
- /
- SQL>
- PL/SQL procedure successfully completed
- Executed in 1.782 seconds
从上面两个例子说明: 执行没有绑定变量的sql语句就像在调用每个方法前编译子例程一样。想像一下,把java源代码交给用户,在调用类里的方法前,要先调用java编辑器,编译类,运行方法,然后产生字节码。下一次要执行相同的方法时,又必须做相同的事情;编译,运行,然后产生字节码。
作者: qzj_jo2005 发表日期: 1207103640
在项目经常在group by 时想把字符串也累计出来,如:
select min(t.weighttime), --过衡最小时间
max(t.weighttime),--过衡最大时间
sum(t.netweight), --重量
count(t.truckboxid),--车数
t.boxlicence -- 车皮号
from truckweighboxes t
作者: qzj_jo2005 发表日期: 1207055100
- --sqlserver 实现
- select distinct *
- from ta as tt
- where 学生姓名 in
- ( select top 5学生姓名
- from ta
- where 班级=tt.班级
- order by 成绩 desc)
- order by 班级, 成绩 desc
作者: qzj_jo2005 发表日期: 1207054020
Start with...Connect By子句递归查询一般用于一个表维护树形结构的应用。
- --插入测试数据:
- INSERT INTO provider(ID,NAME,PID) VALUES('1','10','');
- INSERT INTO provider(ID,NAME,PID) VALUES('2','11','1');
- INSERT INTO provider(ID,NAME,PID) VALUES('3','20','');
- INSERT INTO provider(ID,NAME,PID) VALUES('4','12','1');
- INSERT INTO provider(ID,NAME,PID) VALUES('5','121','2');
- 从Root往树末梢递归
- select * from provider
- start with pid is null
- connect by prior id = pid
- 从末梢往树ROOT递归
- select * from TBL_TEST
- start with id=5
- connect by prior pid = id
