随笔分类 - oracle
摘要:sql中有聚合函数,group by的时候,聚合函数都是取该分组中符合的那个数据。 如下图所示,在asp分组中,ad中最大为v,em中最大为13,都是取该分组中的最大值, 并不是一定是属于同一行。 所以,根据某个字段(如最大值)去取的某一行的数据时,不能有2个以上的聚合函数一起用。 除非,想获得的数据可以不是同一行的。
阅读全文
摘要:在ORACLE中,使用绑定变量,可以降低硬解析,通常可以提高系统的性能(注意,是通常,不是任何情况下)。 以表tabletest为例,我们来看看如何使用绑定变量,tabletest的表结构为 field1 number(10) field2 number(10) field3 number(10) field4 number(1...
阅读全文
摘要:对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(,>=,=,between..and 时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来,其实您只要理解好了这个 rownum 伪列的意义就不应该感到惊奇,同样是伪列,rownum 与 rowid 可有些不一样,下面以例子说明 假设某个表 t1(c...
阅读全文
摘要:动态SQL的技巧与陷阱 这节会让我们了解如何完全利用动态SQL语句并避免一些常见的缺陷。 1、改善性能 下例中,Oracle为每个不同的emp_id单独打开一个游标。这就造成资源浪费并降低了效率: CREATE PROCEDURE fire_employee(emp_id NUMBER) AS BEGIN EXECUTE IMMEDIATE 'DELETE FROM emp WHERE emp...
阅读全文
摘要:1. 静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型;另外一种是后期联编(late binding),即SQL语句只有在运行阶段才能建立,例如当查询条件为用户输入时,那么Oracle的SQL引擎就无法在编译期对该程序语句进行确定,只能在用户输入一定的查...
阅读全文