以下文章:可以获取的内容,调PLSQL的行号,使用常用的快捷敲代码的方式(部分),初步调试存储过程,dual部分技巧,去重方式
1.调行号 tools(工具)----SQlWindow(窗口类型下)--show gutter line(显示行号) ,即可获得想要的行号
2.使用“字母+空格 ”比如说 sf 敲出“select * from ”,至于想要的什么样的输出看自己喜好,编辑
3.窗口列表 window list 可拖拽至想要的地方,好处编写存储过程包,或者写sql比较方便,可以右键对命名,容易管理编写的sql文件
4.伪表的使用 dual,可以很好的编写代码
1.比如select xx into v_xx 未查询到变量时会报nodatafound ORA-01403错误 union all select '' from dual 相信可以很好的解决措施之一,除此之外用select count(1) into v_count 来判断count变量
2.当你想要N列,即使没有查询到数据也需要这么多,恭喜你可以用dual union all select '' from dual 可以解决
5.测试存储过程,只需邮件对着存储过程测试(点击debug)
6.去重方式
distinct 去重占用时间较多(使用较多,个人不推荐,因为耗时,在去重很少的时候可推荐;不过同事这些写,思考了一下,可能为图方便,但对代码运行速度有影响)
group by 当选取最大时间值的时候,速度会比row_number快,具体会有所不同
row_number 类似group by 用法 最里层排序,外加一层选取;公司使用较多方式
select 字段 from (
select 字段, row_number() over(partition by name,age order by name) rn
) where rn=1
7. with dt as() 临时表的使用,可用于数据加工的,好处是不需要二次查询,使用的是临时表,数据加工常用
with dt as(),sec as(),ty as()
dt临时表名 sec临时表名 后者可用前者加工的数据,最后select 可用任意一个临时表的数据
当然了在mybatis ibatis中均可使用
8. 无用列的使用 用于统计(分组或者union )或者占位,示例中 利用 1 as rr 作为分组条件将满足条件的数据进行处理,达到最终的目的
with dt as(
select 0 as a ,sum(b) as b,1 as rr from AA where the_date=date'xxxx-xx-xx' group by by the_date,province
union
select sum(a) as a ,0 as b ,1 as rr from AA the_date=date'xxxx-xx-xx' goup by the_date,province
),sec as(
select sum(a) a, sum(b) from dt where 条件 group by rr
)
select * from sec
仅总结以上