oracle的报表的典型sql语句

2019-06-05 11:10

www.xuancheng.org 1

oracle的报表的典型sql语句

Select LEAD(m.app_no,(Select Count(1) From app_mtfeature Where app_no='04')-1,'') over(Order By m.app_no) appno,

m.feature_seq||'' feature_seq,m.month||'' month,m.pointfee,m.discount From app_mtfeature m Where m.app_no='04' Union All

Select '','合计','',Sum(pointfee),Sum(discount) From app_mtfeature Where app_no='04' Union All

Select LEAD(m.app_no,(Select Count(1) From app_mtfeature Where app_no='06')-1,'') over(Order By m.app_no) appno,

m.feature_seq||'',m.month||'',m.pointfee,m.discount From app_mtfeature m Where m.app_no='06' Union All

Select '','合计','',Sum(pointfee),Sum(discount) From app_mtfeature Where app_no='06' zxbxiaobo@sina.com pwd:xiaobo 看看首项,第二项效果怎么样!

http://xiaobo.javaeye.com/blog/34094

一些开发脚本

(1)./* 根据报表文件名称关键字查找报表的执行文件名称等信息*/ SELECT A.USER_CONCURRENT_PROGRAM_NAME, A.CONCURRENT_PROGRAM_NAME, A.OUTPUT_FILE_TYPE, B.EXECUTION_FILE_NAME, B.EXECUTABLE_NAME, FND_L.MEANING,

B.USER_EXECUTABLE_NAME, B.DESCRIPTION

FROM FND_CONCURRENT_PROGRAMS_VL A, fnd_executables_vl B, FND_LOOKUPS FND_L

WHERE A.APPLICATION_ID=B.APPLICATION_ID AND A.EXECUTABLE_ID=B.EXECUTABLE_ID

AND B.EXECUTION_METHOD_CODE= FND_L.LOOKUP_CODE(+) AND FND_L.LOOKUP_TYPE='CP_EXECUTION_METHOD_CODE'

www.xuancheng.org 2

AND A.USER_CONCURRENT_PROGRAM_NAME LIKE 'C%杂项出入库报表%' (2)./*查找在标准请求组里提交的报表所在的职责*/

SELECT A.RESPONSIBILITY_NAME,B.USER_CONCURRENT_PROGRAM_NAME,B.CONCURRENT_PROGRAM_NAME

FROM FND_RESPONSIBILITY_VL A, FND_CONCURRENT_PROGRAMS_VL B, FND_REQUEST_GROUP_UNITS C

WHERE A.APPLICATION_ID=C.APPLICATION_ID AND A.REQUEST_GROUP_ID=C.REQUEST_GROUP_ID AND B.APPLICATION_ID=C.UNIT_APPLICATION_ID AND B.CONCURRENT_PROGRAM_ID=C.REQUEST_UNIT_ID

AND B.USER_CONCURRENT_PROGRAM_NAME LIKE '%杂项出入库报表%' (3)./*查找在菜单里提交的报表所在职责*/

SELECT A.RESPONSIBILITY_NAME,B.PROMPT,F.USER_CONCURRENT_PROGRAM_NAME FROM FND_RESPONSIBILITY_VL A, FND_MENU_ENTRIES_VL B, FND_FORM_FUNCTIONS_VL C, FND_REQUEST_GROUPS D, FND_REQUEST_GROUP_UNITS E, FND_CONCURRENT_PROGRAMS_VL F WHERE A.MENU_ID=B.MENU_ID AND B.FUNCTION_ID=C.FUNCTION_ID

AND C.PARAMETERS LIKE '%'||D.REQUEST_GROUP_CODE||'%' AND D.APPLICATION_ID=E.APPLICATION_ID

AND D.REQUEST_GROUP_ID=E.REQUEST_GROUP_ID AND E.UNIT_APPLICATION_ID=F.APPLICATION_ID

AND E.REQUEST_UNIT_ID=F.CONCURRENT_PROGRAM_ID

AND F.USER_CONCURRENT_PROGRAM_NAME LIKE '%杂项出入库报表%'

SELECT C.ID_FLEX_NAME,A.ID_FLEX_STRUCTURE_NAME,B.FORM_LEFT_PROMPT,C.APPLICATION_TABLE_NAME,B.APPLICATION_COLUMN_NAME,B.FLEX_VALUE_SET_ID FROM FND_ID_FLEX_STRUCTURES_VL A, FND_ID_FLEX_SEGMENTS_VL B, FND_ID_FLEXS C

WHERE A.ID_FLEX_STRUCTURE_NAME='帐户别名' --用你自己要查的代替,就是Form窗口的标题 AND A.APPLICATION_ID=B.APPLICATION_ID AND A.ID_FLEX_CODE=B.ID_FLEX_CODE AND A.ID_FLEX_NUM=B.ID_FLEX_NUM AND A.APPLICATION_ID=C.APPLICATION_ID AND A.ID_FLEX_CODE=C.ID_FLEX_CODE --根据上面FLEX_VALUE_SET_ID查弹性域的数据 SELECT *

FROM FND_FLEX_VALUES_VL T

WHERE T.FLEX_VALUE_SET_ID=1005982 -- FLEX_VALUE_SET_ID --具体某一数据

www.xuancheng.org 3

SELECT *

FROM FND_FLEX_VALUES_VL T

WHERE T.FLEX_VALUE_SET_ID=1005982 AND T.FLEX_VALUE='720611' (5)

/*根据描述性弹性域的标题查找描述性弹性域表和列*/-- SELECT FND_DFV.TITLE,

FND_DFV.DESCRIPTIVE_FLEXFIELD_NAME , FND_DFV.APPLICATION_TABLE_NAME , FND_DFU.APPLICATION_COLUMN_NAME, FND_DFU.FORM_LEFT_PROMPT, FND_DFU.FORM_ABOVE_PROMPT

FROM FND_DESCRIPTIVE_FLEXS_VL FND_DFV, FND_DESCR_FLEX_COL_USAGE_VL FND_DFU WHERE FND_DFV.TITLE='物料' --如:物料

AND FND_DFU.DESCRIPTIVE_FLEXFIELD_NAME=FND_DFV.DESCRIPTIVE_FLEXFIELD_NAME (6)。查找运行请求时间,参数等(可以是某用户的,某个报表)

SELECT C.USER_NAME,papf.full_name,B.USER_CONCURRENT_PROGRAM_NAME,A.REQUEST_DATE, A.ARGUMENT_TEXT,(A.ACTUAL_COMPLETION_DATE-A.ACTUAL_START_DATE)*24*60 MINUTES, A.ACTUAL_START_DATE,A.ACTUAL_COMPLETION_DATE, a.request_id,a.outfile_name

FROM FND_CONCURRENT_REQUESTS A, FND_CONCURRENT_PROGRAMS_VL B, FND_USER C,

per_all_people_f papf

WHERE A.CONCURRENT_PROGRAM_ID=B.CONCURRENT_PROGRAM_ID AND A.REQUESTED_BY=C.USER_ID

and c.user_name=papf.employee_number(+) AND A.ACTUAL_COMPLETION_DATE IS NOT NULL

and B.USER_CONCURRENT_PROGRAM_NAME='你的程序名称' --- like '%XXX%' and c.user_name=' 你要找的用户的'

and a.request_date<=to_date('2005-03-01 23:59:59','yyyy-mm-dd hh24:mi:ss') and a.request_date>=to_date('2005-03-01 00:00:00','yyyy-mm-dd hh24:mi:ss') AND a.request_id> 2254198---为了提高速度,选一个合适时间点的ID

2006-12-13

sql 调优整理(转载)

www.xuancheng.org 4

载自itpub xbxing

很好,很全面的一篇关于oracle sql调优的文章。文章非常长,大家可一有空就看一点。 1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种:

a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性)

设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在SQL句级或是会话(session)级对其进行覆盖.

为了使用基于成本的优化器(CBO, Cost-Based Optimizer) , 你必须经常运行analyze 命令,以增加数据库中的对象统计信息(object statistics)的准确性.

如果数据库的优化器模式设置为选择性(CHOOSE),那么实际的优化器模式将和是否运行过analyze命令有关. 如果table已经被analyze过, 优化器模式将自动成为CBO , 反之,数据库将采用RULE形式的优化器.

在缺省情况下,ORACLE采用CHOOSE优化器, 为了避免那些不必要的全表扫描(full table scan) , 你必须尽量避免使用CHOOSE优化器,而直接采用基于规则或者基于成本的优化器. 2. 访问Table的方式

ORACLE 采用两种访问表中记录的方式: a. 全表扫描

全表扫描就是顺序地访问表中每条记录. ORACLE采用一次读入多个数据块(database block)的方式优化全表扫描.

b. 通过ROWID访问表

你可以采用基于ROWID的访问方式情况,提高访问表的效率, , ROWID包含了表中记录的物理位置信息..ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系. 通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高. 3. 共享SQL语句

为了不重复解析相同的SQL语句,在第一次解析之后, ORACLE将SQL语句存放在内存中.这块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享. 因此,当你执行一个SQL语句(有时被称为一个游标)时,如果它

和之前的执行过的语句完全相同, ORACLE就能很快获得已经被解析的语句以及最好的

-------------------------------------------------------------------------------- txfy 回复于:2003-12-02 10:04:43

执行路径. ORACLE的这个功能大大地提高了SQL的执行性能并节省了内存的使用.

可惜的是ORACLE只对简单的表提供高速缓冲(cache buffering) ,这个功能并不适用于多表连接查询. 数据库管理员必须在init.ora中为这个区域设置合适的参数,当这个内存区域越大,就可以保留更多的语句,当然被共享的可能性也就越大了.

当你向ORACLE 提交一个SQL语句,ORACLE会首先在这块内存中查找相同的语句. 这里需要注明的是,ORACLE对两者采取的是一种严格匹配,要达成共享,SQL语句必须 完全相同(包括空格,换行等). 共享的语句必须满足三个条件: A. 字符级的比较:

当前被执行的语句和共享池中的语句必须完全相同.

www.xuancheng.org 5

例如:

SELECT * FROM EMP; 和下列每一个都不同 SELECT * from EMP; Select * From Emp; SELECT * FROM EMP;

B. 两个语句所指的对象必须完全相同: 例如:

用户 对象名 如何访问

Jack sal_limit private synonym Work_city public synonym Plant_detail public synonym Jill sal_limit private synonym Work_city public synonym Plant_detail table owner

考虑一下下列SQL语句能否在这两个用户之间共享. SQL 能否共享 原因

select max(sal_cap) from sal_limit; 不能 每个用户都有一个private synonym - sal_limit , 它们是不同的对象

select count(*0 from work_city where sdesc like 'NEW%'; 能 两个用户访问相同的对象public synonym - work_city

select a.sdesc,b.location from work_city a , plant_detail b where a.city_id = b.city_id 不能 用户jack 通过private synonym访问plant_detail 而jill 是表的所有者,对象不同.

-------------------------------------------------------------------------------- txfy 回复于:2003-12-02 10:04:59

C. 两个SQL语句中必须使用相同的名字的绑定变量(bind variables)

例如:第一组的两个SQL语句是相同的(可以共享),而第二组中的两个语句是不同的(即使在运行时,赋于不同的绑定变量相同的值) a.

select pin , name from people where pin = :blk1.pin; select pin , name from people where pin = :blk1.pin; b.

select pin , name from people where pin = :blk1.ot_ind; select pin , name from people where pin = :blk1.ov_ind; 4. 选择最有效率的表名顺序(只在基于规则的优化器中有效)

ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表 driving table)将被最先处理. 在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.当ORACLE处理多个表时, 会运用排序及合并的方式连接它们.首先,扫描第一个表(FROM子句中最后的那个表)并对记录进行派序,然后扫描第二个表(FROM子句中最后第二个表),最后将所有从第二个表中检索出的记录与第一个表中合适记录进行合并.

例如: 表 TAB1 16,384 条记录


oracle的报表的典型sql语句.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:倒装芯片(FC,Flip-Chip)装配技术

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: