??xml version="1.0" encoding="utf-8" standalone="yes"?>99久久99久久久精品齐齐,国语产色综合,精品国免费一区二区三区http://www.aygfsteel.com/aojilee/articles/59047.html奥吉奥吉Wed, 19 Jul 2006 09:59:00 GMThttp://www.aygfsteel.com/aojilee/articles/59047.htmlhttp://www.aygfsteel.com/aojilee/comments/59047.htmlhttp://www.aygfsteel.com/aojilee/articles/59047.html#Feedback0http://www.aygfsteel.com/aojilee/comments/commentRss/59047.htmlhttp://www.aygfsteel.com/aojilee/services/trackbacks/59047.html ORACLE数据库命名编码规?/font>
ORACLE数据库命名编码规?br />版本记录Q?br />当前版本Q?br />?者:
完成日期Q?br />{??人:
文g状态:
[ ] 草稿
[√] 正式发布
[ ] 正在修改
{收日期Q?br />1?~写目的
使用l一的命名和~码规范Q数据库命名及~码风格标准化,以便于阅诅R理解和
l承?br />2?适用范围
本规范适用于公司范围内所有以ORACLE作ؓ后台数据库的应用pȝ和项目开发工作?br />3?对象命名规范
3.1 数据库和SID
数据库名定义为系l名+模块?br />Ø 全局数据库名和例ESID 名要求一?br />Ø 因SID 名只能包含字W和数字Q所以全局数据库名和SID 名中不能含有“_”等字符
3.2 表相?br />3.2.1 表空?br />Ø 面向用户的专用数据表I间以用户名+_+data命名 Q如Aud 用户专用数据表空间可?br />名ؓAud_data
Ø 面向用户的专用烦引表I间以用户名+_+idx命名
W?/9?br />Ø 面向用户的专用时表I间以用户名+_+tmp命名
Ø 面向用户的专用回滚段表空间以用户?_+rbs 命名
Ø 面向应用的表I间以应用名+_data/应用?_idx/应用?_tmp/应用?_rbs 命名
Ø LOB D|据专用表I间以其数据表空?_+lobs 命名Q如上例中数据表I间?br />Aud_dataQ则LOB D表I间可命名ؓAud_data_lobs
3.2.2 表空间文?br />表空间文件命名以表空间名+两位数序?序号?1开?l成Q如Aud_data01 {?br />3.2.3 ?br />表命名要遵@以下原则Q?br />Ø 一般表采用“系l名+t_+模块?_+表义名?格式构成
Ø 若数据库中只含有单个模块Q命名可采用“系l名+t_+表义名”格式构?br />Ø 模块名或表义名均以其汉语拼音的首字符命名Q表义名中汉语拼韛_采用写Q且
字符间不加分割符Q?br />Ø 表别名命名规则:取表义名的前3 个字W加最后一个字W。如果存在冲H,适当?br />加字W(如取表义名的? 个字W加最后一个字W等Q?br />Ø 临时表采用“系l名+t_tmp_+表义名?格式构成
Ø 表的命名?br />dft_gy_cbapQ系l名Q电?dfQ?t_+模块名(高压 gyQ?_+表义名(抄表安排 cbapQ?br />dft_cbbj: pȝ名(电费 dfQ?t_+表义名(抄表标记 cbbjQ?br />dft_tmp_hj: pȝ名(电费 dfQ?tmp+表义名(合计hjQ?此处Z时表)
Ø 兌表命名ؓRe_表A_表B,Re 是Relative的羃写,表A 和表B均采用其表义名或
~写形式?br />3.2.4 属性(列或字段Q?br />属性命名遵循以下原则:
Ø 采用有意义的列名Qؓ实际含义的汉语拼音的首字W,且字W间不加M分割W?br />Ø 属性名前不要加表名{作为前~
Ø 属性后不加Mcd标识作ؓ后缀
Ø 不要使用“ID”作为列?br />Ø 兌字段命名?“cd+_+兌表的表义名(或羃写)+_+字段名”进?br />W?/9?br />3.2.5 主键
Ø M表都必须定义主键
Ø 表主键命名ؓQ“pk+_+表名(或羃?+_+主键标识?br />如“pk_YHXX_IDKH”等
3.2.6 外键
表外键命名ؓQ?“fk+_+表名(或羃?+_主表?或羃?+_+主键标识?br />如“fk_YHLX_YHXX_SFZH”等
3.2.7 CHECKU束
CHECK U束命名为: “chk+_+CHECKU束的列名(或羃写)?br />3.2.8 UNIQUEU束
UNIQUE U束命名为: “unq+_+UNIQUEU束的列名(或羃写)?br />3.2.9 索引
索引的命名ؓQ“表名(或羃写)+_+列名+_idx”?br />其中多单词组成的属性列列名取前几个单词首字W再加末单词首字W组?br />如yd_kh 表khid 上的index: yd_kh_khid_idx
3.2.10 触发?br />Ø AFTER型触发器
pȝ?tr_+<表名>_+<i,u,d的Q意组?gt; +[_row]
Ø BEFORE型触发器
pȝ?tr_+<表名>_+bef_<i,u,d的Q意组?gt;+[_row]
Ø INSTEAD OF型触发器
pȝ?ti_+<表名>+_+<i,u,d的Q意组?gt;+[_row]
Ø 各种cd的触发器?br />iQuQd 分别表示insert、update 和delete
行触发器,后加_row 标识Q语句触发器不加,?yddftr_CSH_i_row
3.2.11 ?br />W?/9?br />以中要存储的各个表(或表别名Q及表间加and的组?命名Q即表“A+And+表B…?
如存储GR(工h)和GRJNQ工人技能)表的命名ؓGRAndGRJN
3.3 视图
视图命名以系l名v_+模块名作为前~Q其他命名规则和表的命名cM
3.4 序列
序列命名以seq_+含义名组?br />3.5 同义?br />同义词命名与其基对象的名UC_但要去除其用户前~或含有远E数据库链接的后~
3.6 存储对象相关
3.6.1 存储q程
存储q程命名由“系l名+sp+_+存储q程标识(~写)”组?br />存储q程标识要以实际含义的汉语拼音的首字W构成,q用下划U分割各个组成部分?br />如增加代理商的帐L存储q程为“sfsp_ZJDLSZH”?br />3.6.2 函数
函数命名由“系l名+f+_+函数标识”组?br />3.6.3 ?br />包命名由“系l名+pkg+_+包标识”组?br />3.6.4 函数文本中的变量采用下列格式命名Q?br />Ø 参数变量命名采用“i (o或io)+_+名称”Ş式,前缀i 或o 表输入还是输出参?br />Ø q程变量命名采用“l+_+名称”Ş?br />Ø 全局包变量命名采用“g+_+名称”Ş?br />Ø 游标变量命名采用“名U?_+cur”Ş?br />Ø 帔R型变量命名采用“c+_+名称”Ş?br />Ø 变量名采用小写,若属于词lŞ式,用下划线分隔每个单词
Ø 变量用来存放表中的列或行数据值时Q?TYPE?ROWTYPE 方式声明变量Q变量?br />W?/9?br />明的cd与表中的保持同步Q随表的变化而变?br />3.7 用户及角?br />Ø 用户命名由“系l名U?_+user+_+名词(或羃?或名词短?或羃?”组?br />Ø 角色命名由“系l名U?_+role+_+名词(或羃?或名词短?或羃?”组?br />3.8 数据库链?br />Ø 数据库链接命名由“远E服务器?_+数据库名+_+link”组?br />Ø 若远E服务器名和数据库名一_上式“_+数据库名”部分省?br />3.9 命名中的其它注意事项
Ø 命名都不得超q?0个字W?br />Ø 不要在对象名的字W之间留I格
Ø 心保留词,要保证你的命名没有和保留词、数据库pȝ或者常用访问方法冲H?br />4?~码规范
4.1 一般性注?br />4.1.1 注释可能简z、详l而全?br />4.1.2 创徏每一数据库对象时都要加上COMMENT ON注释Q以说明该对象的功能和用途;Ӟ
Ҏ些数据列也要加上COMMENT ON注释Q以说明该列?或列取值的含义?br />如:XX 表中有CZZT列属性ؓNUMBER(10, 0)可加COMMENT ON 注释如下
COMMENT ON COLUMN XX.CZZT IS '0 = 正常, 1 = {待, 2 = 时, 3 = d'
4.1.3 注释语法包含两种情况Q单行注释、多行注?br />单行注释Q注释前有两个连字符Q?-Q,一般对变量、条件子句可以采用该cL释?br />多行注释Q符?*?/之间的内容ؓ注释内容。对某项完整的操作徏议用该cL释?br />4.2 函数文本注释
4.2.1 在每一个块和过E(存储q程、函数、包、触发器、视囄Q的开头放|注?br />/************************************************************************
W?/9?br />*name : --函数?br />*function : --函数功能
*input : --输入参数
*output : --输出参数
*author : --作?br />*CreateDate : --创徏旉
*UpdateDate : --函数更改信息Q包括作者、时间、更改内容等Q?br />*************************************************************************/
CREATE [OR REPLACE] PROCEDURE dfsp_xxx
?br />4.2.2 传入参数的含义应该有所说明。如果取D围确定,也应该一q说明。取值有特定含义
的变量(如booleancd变量Q,应给出每个值的含义?br />4.2.3 在每一个变量声明的旁边d注释。说明该变量要用作什?br />通常Q简单用单行注释就行了Q例?br />l_sfzh CHAR(11) --w䆾证号?br />4.2.4 在块的每个主要部分之前添加注?br />在块的每个主要部分之前增加注释,解释下—组语句目的Q最好是说明该段语句及算
法的目的以及要得到的l果Q但不要对其l节q行q多的描q?br />4.2.5 在块和过E的开头注释中q可以增加要讉K的数据库{信?br />4.3 常用SQL 语句的编写规?br />4.3.1 CREATE语句
CREATE TABLE dft_dksz(
YHBS VARCHAR2(20) NOT NULL,
ZHGX DATE,
DKKHD VARCHAR2(24),
CONSTRAINT pk_dksz_yhbs PRIMARY KEY (YHBS)
)
4.3.2 SELECT语句
查询语句采用以下原则~写Q可最大化重用׃n池中的SQL 语句Q提高应用程序性能Q:
Ø SELECT 语句分ؓ5部分:
Q?Q?由SELECT 开_后跟一个显C查询结果的列表Q?br />W?/9?br />Q?Q?由FROM 开_后跟一个或多个获取数据所涉及的表Q?br />Q?Q?由WHERE 开_后跟一个或多个定所需值的条gQ?br />Q?Q?由GROUP BY开_后跟一个或多个表列名,通过q些列以Ҏ询结果进行汇总;
Q?Q?由ORDER BY开_后跟一个或多个表列名,通过q些列以Ҏ询结果进行排序?br />Ø 每个部分分行~写Q将每一行的W一个关键字与第一行的SELECTN寚wQ如
SELECT col1, col2, col3
FROM table1
WHERE col1 > col2
GROUP BY col1, col2
ORDER BY col1;
Ø 关键字用大写Q列名和表名采用写
Ø 语句中嵌入逗号Ӟ在逗号后面加一I格Q当逗号是最后一个字W时Q把它放在本?br />Ø 当语句的同一部分要gl到下一行时Q按下列格式排列Q?br />SELECT col1, col2, col3, col4, col5, col6,
col7, col8, col9, col10
Ø 语句中WHERE 和AND 部分格式化,书写布局cM?br />WHERE
AND
AND
Ø 当语句中出现括号Ӟ括号的两边不留空?br />Ø 在SQL 语句使用q算W时Q操作两边应各留一个空|?br />WHERE X = Y
AND A = B
AND C = D
4.3.3 INSERT语句
INSERT INTO <要插入的表名>
(<?>, <?>, .., <列n-1>, <列n>)
VALUES (<??gt;, <??gt;, .., <列n-1?gt;, <列n?gt;)
4.3.4 UPDATE语句
UPDATE <要更新的表名>
SET <要更新的?gt; = <列?gt;
4.3.5 DELETE语句
DELETE FROM table1
WHERE col1 = '???'
W?/9?br />4.4 条g执行语句(IF)~写规范
条g执行语句IF…ELSE 按以下格式编?br />IF <条g表达?gt;
THEN
<一条或多条语句>
[ELSE (或ELSIF<条g表达?gt;)
THEN
<一条或多条语句>
END IF;
?
Q?Q?在IF…THEN和ELSE(或ELSIF)及ELSE…THEN和END IF间可包含一条或多条PL/SQL
语句Q而不需要加BEGIN 和END
Q?Q?IF…ELSE…ENDIF 语句可以嵌套
Q?Q?注意ELSIF的写?br />4.5 循环语句~写规范
4.5.1 单@环语?br />LOOP
<零条或多条语?gt;
EXIT WHEN <条g表达?gt;
<零条或多条语?gt;
END LOOP;
4.5.2 FOR循环语句
FOR 变量 IN [变量取D围]
LOOP
<一条或多条语句>
END LOOP;
4.5.3 WHILE循环语句
WHILE <条g表达?gt;
LOOP
<一条或多条语句>
END LOOP;
4.6 函数文本Q存储过E、函数和包等Q?br />W?/9?br />Ø 对于存储q程、函数等E序块都要有异常处理部分Q在异常部分的最后都要设|OTHERS
异常情态处理器Q以提高E序的自能力Q格式如下:
BEGIN
?br />EXCEPTION
WHEN excep—name1 THEN
?br />WHEN excep—name2 THEN
?br />WHEN OTHERS THEN
?br />END;
Ø 对于子程序、触发器、包{带名的E序块,要用结束标识,?br />CREATE OR REPLACE PROCEDURE XXXsp_XXX IS
?br />BEGIN
?br />END XXXsp_XXX;/* 此处的过E名XXXsp_XXX是可选的Q规范要求写上,与块开始的CREATE相对?*/


奥吉 2006-07-19 17:59 发表评论
]]>
ORACLE之常用FAQ V1.0http://www.aygfsteel.com/aojilee/articles/48992.html奥吉奥吉Tue, 30 May 2006 06:56:00 GMThttp://www.aygfsteel.com/aojilee/articles/48992.htmlhttp://www.aygfsteel.com/aojilee/comments/48992.htmlhttp://www.aygfsteel.com/aojilee/articles/48992.html#Feedback0http://www.aygfsteel.com/aojilee/comments/commentRss/48992.htmlhttp://www.aygfsteel.com/aojilee/services/trackbacks/48992.html阅读全文

奥吉 2006-05-30 14:56 发表评论
]]>
Oracle 分析函数的?/title><link>http://www.aygfsteel.com/aojilee/articles/46581.html</link><dc:creator>奥吉</dc:creator><author>奥吉</author><pubDate>Wed, 17 May 2006 03:10:00 GMT</pubDate><guid>http://www.aygfsteel.com/aojilee/articles/46581.html</guid><wfw:comment>http://www.aygfsteel.com/aojilee/comments/46581.html</wfw:comment><comments>http://www.aygfsteel.com/aojilee/articles/46581.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/aojilee/comments/commentRss/46581.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/aojilee/services/trackbacks/46581.html</trackback:ping><description><![CDATA[ <span id="wmqeeuq" class="bold"> <span id="wmqeeuq" class="smalltxt"> <strong> <font face="Arial">Oracle 分析函数的?br /><br /></font> </strong> </span> </span>Oracle <u><b><font color="#ff0000">分析函数</font></b></u>使用介绍<br />   <u><b><font color="#ff0000">分析函数</font></b></u>是oracle816引入的一个全新的概念,为我们分析数据提供了一U简单高效的处理方式.?u><b><font color="#ff0000">分析函数</font></b></u>出现以前,我们必须使用自联查询,子查询或者内联视?甚至复杂的存储过E实现的语句,现在只要一条简单的sql语句可以实C,而且在执行效率方面也有相当大的提?下面我将针对<u><b><font color="#ff0000">分析函数</font></b></u>做一些具体的说明.<br /><br />今天我主要给大家介绍一下以下几个函数的使用Ҏ<br />1.  自动汇d数rollup,cube,<br />2.  rank 函数, rank,dense_rank,row_number<br />3.        lag,lead函数<br />4.        sum,avg,的移动增?Udq_?br />5.        ratio_to_report报表处理函数<br />6.        first,last取基数的<u><b><font color="#ff0000">分析函数</font></b></u><br /><br /><br /><strong><font face="Arial"><span id="wmqeeuq" class="bold"><span id="wmqeeuq" class="smalltxt">基础数据<br /><br /></span></span><br /><br /></font></strong><center><table cellspacing="0" cellpadding="0" width="90%" border="0"><tbody><tr><td class="smalltxt">  Code:</td><td align="right"><a class="smalltxt" onclick="copycode(findobj('code0'));" ><font face="Arial" color="#003366">[Copy to clipboard]</font></a>  </td></tr><tr><td colspan="2"><table cellspacing="1" cellpadding="10" width="100%" bgcolor="#efefcf" border="0"><tbody><tr><td id="code0" width="100%" bgcolor="#ffffff">06:34:23 SQL> select * from t;<br /><br />BILL_MONTH      AREA_CODE  NET_TYPE       LOCAL_FARE<br />--------------- ---------- ---------- --------------<br />200405          5761       G              7393344.04<br />200405          5761       J              5667089.85<br />200405          5762       G              6315075.96<br />200405          5762       J              6328716.15<br />200405          5763       G              8861742.59<br />200405          5763       J              7788036.32<br />200405          5764       G              6028670.45<br />200405          5764       J              6459121.49<br />200405          5765       G             13156065.77<br />200405          5765       J             11901671.70<br />200406          5761       G              7614587.96<br />200406          5761       J              5704343.05<br />200406          5762       G              6556992.60<br />200406          5762       J              6238068.05<br />200406          5763       G              9130055.46<br />200406          5763       J              7990460.25<br />200406          5764       G              6387706.01<br />200406          5764       J              6907481.66<br />200406          5765       G             13562968.81<br />200406          5765       J             12495492.50<br />200407          5761       G              7987050.65<br />200407          5761       J              5723215.28<br />200407          5762       G              6833096.68<br />200407          5762       J              6391201.44<br />200407          5763       G              9410815.91<br />200407          5763       J              8076677.41<br />200407          5764       G              6456433.23<br />200407          5764       J              6987660.53<br />200407          5765       G             14000101.20<br />200407          5765       J             12301780.20<br />200408          5761       G              8085170.84<br />200408          5761       J              6050611.37<br />200408          5762       G              6854584.22<br />200408          5762       J              6521884.50<br />200408          5763       G              9468707.65<br />200408          5763       J              8460049.43<br />200408          5764       G              6587559.23<br /><br />BILL_MONTH      AREA_CODE  NET_TYPE       LOCAL_FARE<br />--------------- ---------- ---------- --------------<br />200408          5764       J              7342135.86<br />200408          5765       G             14450586.63<br />200408          5765       J             12680052.38<br /><br />40 rows selected.<br /><br />Elapsed: 00:00:00.00</td></tr></tbody></table></td></tr></tbody></table></center><br /><br /><strong><font face="Arial"><span id="wmqeeuq" class="bold"><span id="wmqeeuq" class="smalltxt">1. 使用rollup函数的介l?br /><br /></span></span><br /><br /></font></strong><center><table cellspacing="0" cellpadding="0" width="90%" border="0"><tbody><tr><td>  Quote:</td></tr><tr><td><table cellspacing="1" cellpadding="10" width="100%" bgcolor="#efefcf" border="0"><tbody><tr><td width="100%" bgcolor="#ffffff"><font color="blue">下面是直接用普通sql语句求出各地区的汇L据的例子</font><br />06:41:36 SQL> set autot on<br />06:43:36 SQL> select area_code,sum(local_fare) local_fare<br />06:43:50   2  from t<br />06:43:51   3  group by area_code<br />06:43:57   4  union all<br />06:44:00   5  select '合计' area_code,sum(local_fare) local_fare<br />06:44:06   6  from t<br />06:44:08   7  /<br /><br />AREA_CODE      LOCAL_FARE<br />---------- --------------<br />5761          54225413.04<br />5762          52039619.60<br />5763          69186545.02<br />5764          53156768.46<br />5765         104548719.19<br />合计         333157065.31<br /><br />6 rows selected.<br /><br />Elapsed: 00:00:00.03<br /><br />Execution Plan<br />----------------------------------------------------------<br />   0      SELECT STATEMENT Optimizer=ALL_ROWS (Cost=7 Card=1310 Bytes=<br />          24884)<br /><br />   1    0   UNION-ALL<br />   2    1     SORT (GROUP BY) (Cost=5 Card=1309 Bytes=24871)<br />   3    2       TABLE ACCESS (FULL) OF 'T' (Cost=2 Card=1309 Bytes=248<br />          71)<br /><br />   4    1     SORT (AGGREGATE)<br />   5    4       TABLE ACCESS (FULL) OF 'T' (Cost=2 Card=1309 Bytes=170<br />          17)<br /><br /><br /><br /><br /><br />Statistics<br />----------------------------------------------------------<br />          0  recursive calls<br />          0  db block gets<br /><font color="red">          6  consistent gets</font><br />          0  physical reads<br />          0  redo size<br />        561  bytes sent via SQL*Net to client<br />        503  bytes received via SQL*Net from client<br />          2  SQL*Net roundtrips to/from client<br />          1  sorts (memory)<br />          0  sorts (disk)<br />          6  rows processed<br /><br /><br /><font color="blue">下面是用分析函数rollup得出的汇L据的例子</font><br />06:44:09 SQL> select nvl(area_code,'合计') area_code,sum(local_fare) local_fare<br />06:45:26   2  from t<br />06:45:30   3  group by rollup(nvl(area_code,'合计'))<br />06:45:50   4  /<br /><br />AREA_CODE      LOCAL_FARE<br />---------- --------------<br />5761          54225413.04<br />5762          52039619.60<br />5763          69186545.02<br />5764          53156768.46<br />5765         104548719.19<br />             333157065.31<br /><br />6 rows selected.<br /><br />Elapsed: 00:00:00.00<br /><br />Execution Plan<br />----------------------------------------------------------<br />   0      SELECT STATEMENT Optimizer=ALL_ROWS (Cost=5 Card=1309 Bytes=<br />          24871)<br /><br />   1    0   SORT (GROUP BY ROLLUP) (Cost=5 Card=1309 Bytes=24871)<br />   2    1     TABLE ACCESS (FULL) OF 'T' (Cost=2 Card=1309 Bytes=24871<br />          )<br /><br /><br /><br /><br /><br />Statistics<br />----------------------------------------------------------<br />          0  recursive calls<br />          0  db block gets<br /><font color="red">          4  consistent gets</font><br />          0  physical reads<br />          0  redo size<br />        557  bytes sent via SQL*Net to client<br />        503  bytes received via SQL*Net from client<br />          2  SQL*Net roundtrips to/from client<br />          1  sorts (memory)<br />          0  sorts (disk)<br />          6  rows processed<br /><br /><br /><b>从上面的例子我们不难看出使用rollup函数,pȝ的sql语句更加?耗用的资源更??个consistent gets降到4个consistent gets,如果很大的话,l果可惌知?</b></td></tr></tbody></table></td></tr></tbody></table></center><br /><br /><table style="TABLE-LAYOUT: fixed" height="100%" cellspacing="0" cellpadding="0" width="100%" border="0"><tbody><tr><td valign="top"><strong><font face="Arial"><span id="wmqeeuq" class="bold"><span id="wmqeeuq" class="smalltxt">1. 使用cube函数的介l?br /><br /></span></span><br /><br /></font></strong><center><table cellspacing="0" cellpadding="0" width="90%" border="0"><tbody><tr><td>  Quote:</td></tr><tr><td><table cellspacing="1" cellpadding="10" width="100%" bgcolor="#efefcf" border="0"><tbody><tr><td width="100%" bgcolor="#ffffff"><b>Z介绍cube函数我们再来看看另外一个用rollup的例?/b><br />06:53:00 SQL> select area_code,bill_month,sum(local_fare) local_fare<br />06:53:37   2  from t<br />06:53:38   3  group by rollup(area_code,bill_month)<br />06:53:49   4  /<br /><br />AREA_CODE  BILL_MONTH          LOCAL_FARE<br />---------- --------------- --------------<br />5761       200405             13060433.89<br />5761       200406             13318931.01<br />5761       200407             13710265.93<br />5761       200408             14135782.21<br />5761                          54225413.04<br />5762       200405             12643792.11<br />5762       200406             12795060.65<br />5762       200407             13224298.12<br />5762       200408             13376468.72<br />5762                          52039619.60<br />5763       200405             16649778.91<br />5763       200406             17120515.71<br />5763       200407             17487493.32<br />5763       200408             17928757.08<br />5763                          69186545.02<br />5764       200405             12487791.94<br />5764       200406             13295187.67<br />5764       200407             13444093.76<br />5764       200408             13929695.09<br />5764                          53156768.46<br />5765       200405             25057737.47<br />5765       200406             26058461.31<br />5765       200407             26301881.40<br />5765       200408             27130639.01<br />5765                         104548719.19<br />                             333157065.31<br /><br />26 rows selected.<br /><br />Elapsed: 00:00:00.00<br /><br /><b>pȝ只是Ҏrollup的第一个参数area_code对结果集的数据做了汇d?而没有对bill_month做汇d析处?cube函数是Zq个而设计的.<br />下面,让我们看看用cube函数的结?/b><br /><br />06:58:02 SQL> select area_code,bill_month,sum(local_fare) local_fare<br />06:58:30   2  from t<br />06:58:32   3  group by cube(area_code,bill_month)<br />06:58:42   4  order by area_code,bill_month nulls last<br />06:58:57   5  /<br /><br />AREA_CODE  BILL_MONTH          LOCAL_FARE<br />---------- --------------- --------------<br />5761       200405                13060.43<br />5761       200406                13318.93<br />5761       200407                13710.27<br />5761       200408                14135.78<br />5761                             54225.41<br />5762       200405                12643.79<br />5762       200406                12795.06<br />5762       200407                13224.30<br />5762       200408                13376.47<br />5762                             52039.62<br />5763       200405                16649.78<br />5763       200406                17120.52<br />5763       200407                17487.49<br />5763       200408                17928.76<br />5763                             69186.54<br />5764       200405                12487.79<br />5764       200406                13295.19<br />5764       200407                13444.09<br />5764       200408                13929.69<br />5764                             53156.77<br />5765       200405                25057.74<br />5765       200406                26058.46<br />5765       200407                26301.88<br />5765       200408                27130.64<br />5765                            104548.72<br /><font color="red"><b>           200405                79899.53<br />           200406                82588.15<br />           200407                84168.03<br />           200408                86501.34</b></font><br />                                333157.05<br /><br />30 rows selected.<br /><br />Elapsed: 00:00:00.01<br /><br /><b>可以看到,在cube函数的输出结果比使用rollup多出了几行统计数?q就是cube函数Ҏbill_month做的汇ȝ计结?/b></td></tr></tbody></table></td></tr></tbody></table></center><br /></td></tr></tbody></table><strong><font face="Arial"><span id="wmqeeuq" class="bold"><span id="wmqeeuq" class="smalltxt">1 rollup ?cube函数的再深入<br /><br /></span></span><br /><br /></font></strong><center><table cellspacing="0" cellpadding="0" width="90%" border="0"><tbody><tr><td>  Quote:</td></tr><tr><td><table cellspacing="1" cellpadding="10" width="100%" bgcolor="#efefcf" border="0"><tbody><tr><td width="100%" bgcolor="#ffffff"><b>从上面的l果中我们很Ҏ发现,每个l计数据所对应的行都会出现null,<br />我们如何来区分到底是Ҏ那个字段做的汇d,<br />q时?oracle的grouping函数q墨登Z.<br />如果当前的汇总记录是利用该字D得出的,grouping函数׃q回1,否则q回0<br /></b><br /><br />  1  select decode(grouping(area_code),1,'all area',to_char(area_code)) area_code,<br />  2         decode(grouping(bill_month),1,'all month',bill_month) bill_month,<br />  3         sum(local_fare) local_fare<br />  4  from t<br />  5  group by cube(area_code,bill_month)<br />  6* order by area_code,bill_month nulls last<br />07:07:29 SQL> /<br /><br />AREA_CODE  BILL_MONTH          LOCAL_FARE<br />---------- --------------- --------------<br />5761       200405                13060.43<br />5761       200406                13318.93<br />5761       200407                13710.27<br />5761       200408                14135.78<br />5761       all month             54225.41<br />5762       200405                12643.79<br />5762       200406                12795.06<br />5762       200407                13224.30<br />5762       200408                13376.47<br />5762       all month             52039.62<br />5763       200405                16649.78<br />5763       200406                17120.52<br />5763       200407                17487.49<br />5763       200408                17928.76<br />5763       all month             69186.54<br />5764       200405                12487.79<br />5764       200406                13295.19<br />5764       200407                13444.09<br />5764       200408                13929.69<br />5764       all month             53156.77<br />5765       200405                25057.74<br />5765       200406                26058.46<br />5765       200407                26301.88<br />5765       200408                27130.64<br />5765       all month            104548.72<br /><font color="red"><b>all area   200405                79899.53<br />all area   200406                82588.15<br />all area   200407                84168.03<br />all area   200408                86501.34<br />all area   all month            333157.05<br /></b></font><br />30 rows selected.<br /><br />Elapsed: 00:00:00.01<br />07:07:31 SQL><br /><br /><b><br />可以看到,所有的I值现在都Ҏgrouping函数做出了很好的区分,q样利用rollup,cube和grouping函数,我们做数据统计的时候就可以L很多?</b></td></tr></tbody></table></td></tr></tbody></table></center><br /><br /><br /><table style="TABLE-LAYOUT: fixed" height="100%" cellspacing="0" cellpadding="0" width="100%" border="0"><tbody><tr><td valign="top"><strong><span id="wmqeeuq" class="bold"><span id="wmqeeuq" class="smalltxt"><font face="Arial">2. rank函数的介l?br /><br /></font></span></span>介绍完rollup和cube函数的?下面我们来看看rankpd函数的用方?</strong><br /><br /><b>问题2.</b>我想查出q几个月份中各个地区的总话费的排名.<br /><br /><center><table cellspacing="0" cellpadding="0" width="90%" border="0"><tbody><tr><td>  Quote:</td></tr><tr><td><table cellspacing="1" cellpadding="10" width="100%" bgcolor="#efefcf" border="0"><tbody><tr><td width="100%" bgcolor="#ffffff"><b>Zrank,dense_rank,row_number函数的差别显C出?我们对已有的基础数据做一些修??763的数据改成与5761的数据相?</b><br />  1  update t t1 set local_fare = (<br />  2    select local_fare from t t2<br />  3     where t1.bill_month = t2.bill_month<br />  4     and t1.net_type = t2.net_type<br />  5     and t2.area_code = '5761'<br />  6* ) where area_code = '5763'<br />07:19:18 SQL> /<br /><br />8 rows updated.<br /><br />Elapsed: 00:00:00.01<br /><br />我们先用rank函数来计各个地区的话费排名.<br />07:34:19 SQL> select area_code,sum(local_fare) local_fare,<br />07:35:25   2    rank() over (order by sum(local_fare) desc) fare_rank<br />07:35:44   3  from t<br />07:35:45   4  group by area_codee<br />07:35:50   5<br />07:35:52 SQL> select area_code,sum(local_fare) local_fare,<br />07:36:02   2    rank() over (order by sum(local_fare) desc) fare_rank<br />07:36:20   3  from t<br />07:36:21   4  group by area_code<br />07:36:25   5  /<br /><br />AREA_CODE      LOCAL_FARE  FARE_RANK<br />---------- -------------- ----------<br />5765            104548.72          1<br />5761             54225.41          2<br />5763             54225.41          <font color="red">2 </font><br />5764             53156.77          <font color="red">4 </font><br />5762             52039.62          5<br /><br />Elapsed: 00:00:00.01<br /><br /><b>我们可以看到U色标注的地方出C,跳位,排名3没有出现<br />下面我们再看看dense_rank查询的结?<br /></b><br /><br />07:36:26 SQL> select area_code,sum(local_fare) local_fare,<br />07:39:16   2    dense_rank() over (order by sum(local_fare) desc ) fare_rank<br />07:39:39   3  from t<br />07:39:42   4  group by area_code<br />07:39:46   5  /<br /><br />AREA_CODE      LOCAL_FARE  FARE_RANK<br />---------- -------------- ----------<br />5765            104548.72          1<br />5761             54225.41          2<br />5763             54225.41          2<br />5764             53156.77          3  <font color="red">q是q里出现了第三名</font><br />5762             52039.62          4<br /><br />Elapsed: 00:00:00.00<br /><br /><b><br />在这个例子中,出现了一个第三名,q就是rank和dense_rank的差?<br />rank如果出现两个相同的数?那么后面的数据就?font color="blue">直接跌</font>q个排名,而dense_rank则不?<br />差别更大的是,row_number哪怕是两个数据完全相同,排名也会不一?q个Ҏ在我们x出对应没个条件的唯一记录的时候又很大用处<br /></b><br /><br />  1  select area_code,sum(local_fare) local_fare,<br />  2     row_number() over (order by sum(local_fare) desc ) fare_rank<br />  3  from t<br />  4* group by area_code<br />07:44:50 SQL> /<br /><br />AREA_CODE      LOCAL_FARE  FARE_RANK<br />---------- -------------- ----------<br />5765            104548.72          1<br /><font color="red">5761             54225.41          2</font><br /><font color="red">5763             54225.41          3</font><br />5764             53156.77          4<br />5762             52039.62          5<br /><br /><b>在row_nubmer函数?我们发现,哪怕sum(local_fare)完全相同,我们q是得到了不一h?我们可以利用q个Ҏ剔除数据库中的重复记录.<br /><br />q个帖子中的几个例子是ؓ了说明这三个函数的基本用法的. 下个帖子我们详l介l他们的一些用?<br /></b></td></tr></tbody></table></td></tr></tbody></table></center><br /></td></tr></tbody></table><span id="wmqeeuq" class="bold"><span id="wmqeeuq" class="smalltxt"><strong><font face="Arial">2. rank函数的介l?br /><br /></font></strong></span></span>a. 取出数据库中最后入|的n个用?br />select user_id,tele_num,user_name,user_status,create_date <br />from (<br />   select user_id,tele_num,user_name,user_status,create_date,<br />      rank() over (order by create_date desc) add_rank<br />   from user_info<br />)<br />where add_rank <= :n;<br /><br />b.Ҏobject_name删除数据库中的重复记?br />create table t as select obj#,name from sys.obj$;<br />再insert into t1 select * from t1 数次.<br />delete from t1 where rowid in (<br />   select row_id from (<br />      select rowid row_id,row_number() over (partition by obj# order by rowid ) rn<br />   ) where rn <> 1<br />);<br /><br />c. 取出各地区的话费收入在各个月份排?<br />SQL> select bill_month,area_code,sum(local_fare) local_fare,<br />  2     rank() over (partition by bill_month order by sum(local_fare) desc) area_rank<br />  3  from t<br />  4  group by bill_month,area_code<br />  5  /<br /><br />BILL_MONTH      AREA_CODE           LOCAL_FARE  AREA_RANK<br />--------------- --------------- -------------- ----------<br />200405          5765                  25057.74          1<br />200405          5761                  13060.43          2<br />200405          5763                  13060.43          2<br />200405          5762                  12643.79          4<br />200405          5764                  12487.79          5<br />200406          5765                  26058.46          1<br />200406          5761                  13318.93          2<br />200406          5763                  13318.93          2<br />200406          5764                  13295.19          4<br />200406          5762                  12795.06          5<br />200407          5765                  26301.88          1<br />200407          5761                  13710.27          2<br />200407          5763                  13710.27          2<br />200407          5764                  13444.09          4<br />200407          5762                  13224.30          5<br />200408          5765                  27130.64          1<br />200408          5761                  14135.78          2<br />200408          5763                  14135.78          2<br />200408          5764                  13929.69          4<br />200408          5762                  13376.47          5<br /><br />20 rows selected.<br />SQL><br /><br /><br /><strong><span id="wmqeeuq" class="bold"><span id="wmqeeuq" class="smalltxt"><font face="Arial">3. lag和lead函数介绍<br /><br /></font></span></span>取出每个月的上个月和下个月的话费总额</strong><br />  1  select area_code,bill_month, local_fare cur_local_fare,<br />  2     lag(local_fare,2,0) over (partition by area_code order by bill_month ) pre_local_fare,<br />  3     lag(local_fare,1,0) over (partition by area_code order by bill_month ) last_local_fare,<br />  4     lead(local_fare,1,0) over (partition by area_code order by bill_month ) next_local_fare,<br />  5     lead(local_fare,2,0) over (partition by area_code order by bill_month ) post_local_fare<br />  6  from (<br />  7     select area_code,bill_month,sum(local_fare) local_fare<br />  8     from t<br />  9     group by area_code,bill_month<br />10* )<br />SQL> /<br />AREA_CODE BILL_MONTH CUR_LOCAL_FARE PRE_LOCAL_FARE LAST_LOCAL_FARE NEXT_LOCAL_FARE POST_LOCAL_FARE<br />--------- ---------- -------------- -------------- --------------- --------------- ---------------<br />5761      200405          13060.433              0               0        13318.93       13710.265<br />5761      200406           13318.93              0       13060.433       13710.265       14135.781<br />5761      200407          13710.265      13060.433        13318.93       14135.781               0<br />5761      200408          14135.781       13318.93       13710.265               0               0<br />5762      200405          12643.791              0               0        12795.06       13224.297<br />5762      200406           12795.06              0       12643.791       13224.297       13376.468<br />5762      200407          13224.297      12643.791        12795.06       13376.468               0<br />5762      200408          13376.468       12795.06       13224.297               0               0<br />5763      200405          13060.433              0               0        13318.93       13710.265<br />5763      200406           13318.93              0       13060.433       13710.265       14135.781<br />5763      200407          13710.265      13060.433        13318.93       14135.781               0<br />5763      200408          14135.781       13318.93       13710.265               0               0<br />5764      200405          12487.791              0               0       13295.187       13444.093<br />5764      200406          13295.187              0       12487.791       13444.093       13929.694<br />5764      200407          13444.093      12487.791       13295.187       13929.694               0<br />5764      200408          13929.694      13295.187       13444.093               0               0<br />5765      200405          25057.736              0               0        26058.46       26301.881<br />5765      200406           26058.46              0       25057.736       26301.881       27130.638<br />5765      200407          26301.881      25057.736        26058.46       27130.638               0<br />5765      200408          27130.638       26058.46       26301.881               0               0<br />20 rows selected.<br /><br /><b>利用lag和lead函数,我们可以在同一行中昄前n行的数据,也可以显C后n行的数据.</b><br /><br /><br /><span id="wmqeeuq" class="bold"><span id="wmqeeuq" class="smalltxt"><strong><font face="Arial">4. sum,avg,max,minUd计算数据介绍<br /><br /></font></strong></span></span>计算出各个连l?个月的通话费用的^均数<br />  1  select area_code,bill_month, local_fare,<br />  2     sum(local_fare)<br />  3             over (  partition by area_code<br />  4                     order by to_number(bill_month)<br />  5                     range between 1 preceding and 1 following ) "3month_sum",<br />  6     avg(local_fare)<br />  7             over (  partition by area_code<br />  8                     order by to_number(bill_month)<br />  9                     range between 1 preceding and 1 following ) "3month_avg",<br />10     max(local_fare)<br />11             over (  partition by area_code<br />12                     order by to_number(bill_month)<br />13                     range between 1 preceding and 1 following ) "3month_max",<br />14     min(local_fare)<br />15             over (  partition by area_code<br />16                     order by to_number(bill_month)<br />17                     range between 1 preceding and 1 following ) "3month_min"<br />18  from (<br />19     select area_code,bill_month,sum(local_fare) local_fare<br />20     from t<br />21     group by area_code,bill_month<br />22* )<br />SQL> /<br /><br />AREA_CODE BILL_MONTH       LOCAL_FARE 3month_sum 3month_avg 3month_max 3month_min<br />--------- ---------- ---------------- ---------- ---------- ---------- ----------<br />5761      200405            <font color="blue">13060.433</font>  26379.363 13189.6815   13318.93  13060.433<br />5761      200406            <font color="blue">13318.930</font>  40089.628 13363.2093  13710.265  13060.433<br />5761      200407            <font color="blue">13710.265</font>  41164.976 13721.6587  14135.781   13318.93<br /><b>40089.628 = 13060.433 + 13318.930 + 13710.265<br />13363.2093 = (13060.433 + 13318.930 + 13710.265) / 3<br />13710.265 = max(13060.433 + 13318.930 + 13710.265)<br />13060.433 = min(13060.433 + 13318.930 + 13710.265)</b><br />5761      200408            14135.781  27846.046  13923.023  14135.781  13710.265<br />5762      200405            12643.791  25438.851 12719.4255   12795.06  12643.791<br />5762      200406            12795.060  38663.148  12887.716  13224.297  12643.791<br />5762      200407            13224.297  39395.825 13131.9417  13376.468   12795.06<br />5762      200408            13376.468  26600.765 13300.3825  13376.468  13224.297<br />5763      200405            13060.433  26379.363 13189.6815   13318.93  13060.433<br />5763      200406            13318.930  40089.628 13363.2093  13710.265  13060.433<br />5763      200407            13710.265  41164.976 13721.6587  14135.781   13318.93<br />5763      200408            14135.781  27846.046  13923.023  14135.781  13710.265<br />5764      200405            12487.791  25782.978  12891.489  13295.187  12487.791<br />5764      200406            13295.187  39227.071 13075.6903  13444.093  12487.791<br />5764      200407            13444.093  40668.974 13556.3247  13929.694  13295.187<br />5764      200408            13929.694  27373.787 13686.8935  13929.694  13444.093<br />5765      200405            25057.736  51116.196  25558.098   26058.46  25057.736<br />5765      200406            26058.460  77418.077 25806.0257  26301.881  25057.736<br />5765      200407            26301.881  79490.979  26496.993  27130.638   26058.46<br />5765      200408            27130.638  53432.519 26716.2595  27130.638  26301.881<br /><br />20 rows selected.<br /><br /><strong><font face="Arial"><span id="wmqeeuq" class="bold"><span id="wmqeeuq" class="smalltxt">5. ratio_to_report函数的介l?br /><br /></span></span><br /><br /></font></strong><center><table cellspacing="0" cellpadding="0" width="90%" border="0"><tbody><tr><td>  Quote:</td></tr><tr><td><table cellspacing="1" cellpadding="10" width="100%" bgcolor="#efefcf" border="0"><tbody><tr><td width="100%" bgcolor="#ffffff">  1  select bill_month,area_code,sum(local_fare) local_fare,<br />  2     ratio_to_report(sum(local_fare)) over<br />  3       ( partition by bill_month ) area_pct<br />  4  from t<br />  5* group by bill_month,area_code<br />SQL> break on bill_month skip 1<br />SQL> compute sum of local_fare on bill_month<br />SQL> compute sum of area_pct on bill_month<br />SQL> /<br /><br />BILL_MONTH AREA_CODE       LOCAL_FARE   AREA_PCT<br />---------- --------- ---------------- ----------<br />200405     5761             13060.433 .171149279<br />           5762             12643.791 .165689431<br />           5763             13060.433 .171149279<br />           5764             12487.791 .163645143<br />           5765             25057.736 .328366866<br />**********           ---------------- ----------<br />sum                         76310.184          1<br /><br />200406     5761             13318.930 .169050772<br />           5762             12795.060 .162401542<br />           5763             13318.930 .169050772<br />           5764             13295.187 .168749414<br />           5765             26058.460 .330747499<br />**********           ---------------- ----------<br />sum                         78786.567          1<br /><br />200407     5761             13710.265 .170545197<br />           5762             13224.297 .164500127<br />           5763             13710.265 .170545197<br />           5764             13444.093 .167234221<br />           5765             26301.881 .327175257<br />**********           ---------------- ----------<br />sum                         80390.801          1<br /><br />200408     5761             14135.781 .170911147<br />           5762             13376.468 .161730539<br />           5763             14135.781 .170911147<br />           5764             13929.694 .168419416<br />           5765             27130.638 .328027751<br />**********           ---------------- ----------<br />sum                         82708.362          1<br /><br /><br />20 rows selected.</td></tr></tbody></table></td></tr></tbody></table></center><br /><strong><font face="Arial"><span id="wmqeeuq" class="bold"><span id="wmqeeuq" class="smalltxt">6 first,last函数使用介绍<br /><br /></span></span><br /><br /></font></strong><center><table cellspacing="0" cellpadding="0" width="90%" border="0"><tbody><tr><td>  Quote:</td></tr><tr><td><table cellspacing="1" cellpadding="10" width="100%" bgcolor="#efefcf" border="0"><tbody><tr><td width="100%" bgcolor="#ffffff"><b>取出每月通话Ҏ高和最低的两个用户.</b><br />1  select bill_month,area_code,sum(local_fare) local_fare,<br />  2     first_value(area_code)<br />  3             over (order by sum(local_fare) desc<br />  4                     rows unbounded preceding) firstval,<br />  5     first_value(area_code)<br />  6             over (order by sum(local_fare) asc<br />  7                     rows unbounded preceding) lastval<br />  8  from t<br />  9  group by bill_month,area_code<br />10* order by bill_month<br />SQL> /<br /><br />BILL_MONTH AREA_CODE       LOCAL_FARE FIRSTVAL        LASTVAL<br />---------- --------- ---------------- --------------- ---------------<br />200405     5764             12487.791 5765            5764<br />200405     5762             12643.791 5765            5764<br />200405     5761             13060.433 5765            5764<br />200405     5765             25057.736 5765            5764<br />200405     5763             13060.433 5765            5764<br />200406     5762             12795.060 5765            5764<br />200406     5763             13318.930 5765            5764<br />200406     5764             13295.187 5765            5764<br />200406     5765             26058.460 5765            5764<br />200406     5761             13318.930 5765            5764<br />200407     5762             13224.297 5765            5764<br />200407     5765             26301.881 5765            5764<br />200407     5761             13710.265 5765            5764<br />200407     5763             13710.265 5765            5764<br />200407     5764             13444.093 5765            5764<br />200408     5762             13376.468 5765            5764<br />200408     5764             13929.694 5765            5764<br />200408     5761             14135.781 5765            5764<br />200408     5765             27130.638 5765            5764<br />200408     5763             14135.781 5765            5764<br /><br />20 rows selected.</td></tr></tbody></table></td></tr></tbody></table></center><br /><img src ="http://www.aygfsteel.com/aojilee/aggbug/46581.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/aojilee/" target="_blank">奥吉</a> 2006-05-17 11:10 <a href="http://www.aygfsteel.com/aojilee/articles/46581.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>怎样在查询记录时l记录加锁?http://www.aygfsteel.com/aojilee/articles/43301.html奥吉奥吉Wed, 26 Apr 2006 07:17:00 GMThttp://www.aygfsteel.com/aojilee/articles/43301.htmlhttp://www.aygfsteel.com/aojilee/comments/43301.htmlhttp://www.aygfsteel.com/aojilee/articles/43301.html#Feedback0http://www.aygfsteel.com/aojilee/comments/commentRss/43301.htmlhttp://www.aygfsteel.com/aojilee/services/trackbacks/43301.html 怎样在查询记录时l记录加锁?
  • pȝ环境Q?
      1、操作系l:Windows 2000
      2、数据库Q Oracle 8i R2 (8.1.6) for NT 企业?br />3、安装\径:C:\ORACLE
  • 实现ҎQ?
      利用SELECT的FOR UPDATE子句实现conn system/manager --创徏实验用户 grant connect,resource to test identified by test; conn test/test --创徏实验? create table a(a number); insert into a values(1); commit; select * from a for update; ? select * from a for update of a.a;Qa表的a列) --新打开一个SQL*PlusH口 conn test/testQtest用户上的W二个会话) delete from a; 此时Q系l停状态,{待解锁Q? 只要在第一个窗口发出roll;或commit;命oQ即可解除锁定状态?


奥吉 2006-04-26 15:17 发表评论
]]>
对于oracleq行单树查询(递归查询)http://www.aygfsteel.com/aojilee/articles/41107.html奥吉奥吉Fri, 14 Apr 2006 07:10:00 GMThttp://www.aygfsteel.com/aojilee/articles/41107.htmlhttp://www.aygfsteel.com/aojilee/comments/41107.htmlhttp://www.aygfsteel.com/aojilee/articles/41107.html#Feedback0http://www.aygfsteel.com/aojilee/comments/commentRss/41107.htmlhttp://www.aygfsteel.com/aojilee/services/trackbacks/41107.html对于oracleq行单树查询(递归查询)
DEPTID PAREDEPTID NAME
NUMBER NUMBER CHAR (40 Byte)
部门id 爉门id(所属部门id) 部门名称
通过子节点向根节点追?
select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid
通过根节炚w历子节点.
select * from persons.dept start with paredeptid=0 connect by prior deptid=paredeptid
可通过level 关键字查询所在层?
select a.*,level from persons.dept a start with paredeptid=0 connect by prior deptid=paredeptid
再次复习一?start with ...connect by 的用法, start with 后面所跟的是是递归的种子?
递归的种子也是递归开始的地方
connect by 后面?prior" 如果~省Q则只能查询到符合条件的起始行,q不q行递归查询Q?
connect by prior 后面所攄字段是有关系的,它指明了查询的方向?

l习Q?通过子节点获得顶节点
select FIRST_VALUE(deptid)
  OVER (ORDER BY LEVEL DESC ROWS UNBOUNDED PRECEDING) AS firstdeptid from  persons.dept   start with deptid=76 connect by prior paredeptid=deptid


奥吉 2006-04-14 15:10 发表评论
]]>
վ֩ģ壺 | ʡ| | ƽ½| | ͤ| | Զ| | | | | | կ| ƽ| Ǽ| | | ʡ| ƽ| | | ֶ| ľ| ֣| | | | | ѳ| ̨| | | ׼| | ƽ| ԣ| ¡| | | Թ|