﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-konhon-随笔分类-Oracle</title><link>http://www.blogjava.net/konhon/category/3609.html</link><description>忘掉過去，展望未來。找回自我，超越自我。
&lt;br&gt;
&lt;b&gt;逃避不一定躲的过, 面对不一定最难过, 孤单不一定不快乐, 得到不一定能长久, 失去不一定不再拥有, 可能因为某个理由而伤心难过, 但我却能找个理由让自己快乐.&lt;/b&gt;&lt;br&gt;&lt;p&gt;
&lt;!-- Search Google --&gt;
&lt;left&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;
&lt;a href="http://www.google.com/"&gt;
&lt;img src="http://www.google.com/logos/Logo_25wht.gif" border="0" alt="Google" align="middle"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="搜索"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-5408663347953425"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="UTF-8"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="UTF-8"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1;"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="zh-CN"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/left&gt;
&lt;!-- Search Google --&gt;
</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 11:03:37 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 11:03:37 GMT</pubDate><ttl>60</ttl><item><title>Function怎么返回一个数据集？ </title><link>http://www.blogjava.net/konhon/archive/2005/11/29/21781.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Tue, 29 Nov 2005 02:09:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/11/29/21781.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/21781.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/11/29/21781.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/21781.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/21781.html</trackback:ping><description><![CDATA[<STRONG>1.CREATE OR REPLACE PACKAGE ROME AS</STRONG>　　<BR>　　AS<BR>　　TYPE RefCursor IS REF CURSOR;<BR>　　Function GetCompany(key IN char) return RefCursor;<BR>　　END;<BR>　　/<BR>　　CREATE OR REPLACE PACKAGE BODY ROME IS<BR>　　IS<BR>　　Function GetCompany(key IN char) return RefCursor<BR>　　Is<BR>　　v_temp RefCursor;<BR>　　BEGIN<BR>　　OPEN v_temp FOR<BR>　　SELECT * FROM Company WHERE com_ID =key;<BR>　　return v_temp;<BR>　　END GetCompany;<BR>　　END;<BR>　　<BR>　　<B>2.(适用于PLSQL类型)</B><BR>　　<BR>　　Type shifts_ty is RECORD(<BR>　　comp_code　　varchar2(10),<BR>　　SHIFT_CODE　　varchar2(10),<BR>　　sft_flg　　　　varchar2(10),<BR>　　beg_tm　　　　number,<BR>　　end_tm　　　　number,<BR>　　skills　　　　varchar2(10)) ;<BR>　　Type shifts is Table of shifts_ty index by binary_integer;<BR>　　<BR>　　FUNCTION test_proc(test varchar2)<BR>　　<BR>　　return shifts is<BR>　　shiftspkg SHIFTS;　 --表变量shiftspkg<BR>　　<BR>　　cursor q1 is select<BR>　　shifts.comp_code,shifts.shift_code,shifts.WRK_BEG_TM,shifts.WRK_end_TM,<BR>　　shifts.skills from str_shifts shifts where comp_code ='TSI';　--str_shifts是与表变量shiftspkg结构完全相同的真实表<BR>　　qty q1%rowtype;<BR>　　begin<BR>　　<BR>　　open q1;<BR>　　loop<BR>　　fetch q1 into qty;<BR>　　exit when q1%notfound;<BR>　　<BR>　　for iCount in 1.. qty.skills.count<BR>　　loop<BR>　　shiftspkg(icount).comp_code:= qty.comp_code;<BR>　　shiftspkg(icount).SHIFT_CODE:= qty.shift_code;<BR>　　shiftspkg(icount).sft_flg:= 'SLOTS';<BR>　　shiftspkg(icount).beg_tm:= qty.wrk_beg_tm;<BR>　　shiftspkg(icount).end_tm:= qty.wrk_end_tm;<BR>　　shiftspkg(icount).skills:= qty.skills(icount);<BR>　　end loop;<BR>　　end loop;<BR>　　return　　shiftspkg;<BR>　　end;<BR>　　end;<BR>　　<BR>　　<B>3.使用于SQL类型</B><BR>　　<BR>　　create or replace type myScalarType as object<BR>　　( comp_code varchar2(10),<BR>　　shift_code varchar2(10),<BR>　　sft_flg　　　　varchar2(10),<BR>　　beg_tm　　　　number,<BR>　　end_tm　　　　number,<BR>　　skills　　　　varchar2(10)<BR>　　)<BR>　　<BR>　　create or replace type myArrayType as table of myScalarType<BR>　　<BR>　　FUNCTION test_proc(test varchar2) return myArrayType<BR>　　is<BR>　　l_data　myArrayType := myArrayType()　;<BR>　　begin<BR>　　for i in 1 .. 5<BR>　　loop<BR>　　l_data.extend;<BR>　　l_data( l_data.count ) := myScalarType( 'cc-'||i,<BR>　　'sc-'||i,<BR>　　'flg-'||i,<BR>　　i,<BR>　　i,<BR>　　test||i );<BR>　　end loop;<BR>　　<BR>　　return l_data;<BR>　　end;<BR>　　<BR>　　end;<BR>　　<BR>　　select *<BR>　　from THE ( select cast( pkg_test.test_proc('hello') as myArrayType )<BR>　　from dual ) a<BR>　　或<BR>　　select *<BR>　　from table ( cast( my_function() as mytabletype　 ) )<BR>　　order by seq<img src ="http://www.blogjava.net/konhon/aggbug/21781.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-11-29 10:09 <a href="http://www.blogjava.net/konhon/archive/2005/11/29/21781.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PL/SQL编程经验小结 </title><link>http://www.blogjava.net/konhon/archive/2005/11/29/21780.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Tue, 29 Nov 2005 02:06:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/11/29/21780.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/21780.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/11/29/21780.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/21780.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/21780.html</trackback:ping><description><![CDATA[平时在PL/SQL中的编程中遇到一些问题，这里以问答的形式来进行把它们总结下来，以供大家分享。 　<BR>　　<BR>　　<B>1、当需要向表中装载大量的数据流或者需要处理大量的数据流的时候，能否使用管道提高处理效率？<BR>　　</B><BR>　　管道函数对于改善并行查询的性能非常方便，它加快往表中加载数据的速度。管道函数的使用总结如下两点：<BR>　　<BR>　　每当在查询里使用PL/SQL函数时，该查询将被序列化，即一个处理器只能运行一个查询实例，那么在这种情况下不可能使用并行查询（比如在数据仓库中要经常使用这项技术）。因此，为了使用并行查询就必须使用管道函数，这样也就加快了执行的速度。<BR>　　<BR>　　管道函数的输入参数必须是一个引用记录集类型（即ref cursor），而返回的是嵌套表类型（其表中每一行对应每一个引用记录）。在使用管道函数之前，必须先在程序头写上PARALLEL_ENABLE，这样才能在查询语句中使用管道函数来处理了。<BR>　　<BR>　　<B>2． 如何使PL/SQL程序等待一段时间执行？<BR>　　</B><BR>　　方法就是使用DBMS_LOCK包的SLEEP函数，可以进行精确定时，其语法为：<BR>　　<BR>　　DBMS_LOCK.SLEEP (seconds IN NUMBER);<BR>　　<BR>　　<B>3．需要在一张表插入一条记录之后等若干秒后再执行另外一个操作，如何在PL/SQL程序里进行定时操作？<BR>　　</B><BR>　　一般的做法是用循环作延迟，利用 DBMS_UTILITY的gettime函数来检测当前的时间，程序代码如下：<BR>　　<BR>　　DECLARE<BR>　　v_delaytime CONSTANT INTEGER := 100;<BR>　　v_starttime INTEGER ;<BR>　　v_endtime INTEGER ;<BR>　　BEGIN<BR>　　V_starttime := DBMS_UTILITY.get_time;<BR>　　V_endtime := DBMS_UTILITY.get_time;<BR>　　While abs(V_endtime- V_starttime)&lt; v_delaytime loop<BR>　　/*空循环或者简单的耗时执行语句*/<BR>　　End loop;<BR>　　END;<BR>　　/<BR>　　<BR>　　另外如果是不同会话（session）之间的定时，就必须使用DBMS_PIPE包的函数来实现会话间的消息传递。<BR>　　<BR>　　<B>4．当PL/SQL返回一个数据集的时候，该使用集合还是游标？<BR>　　</B><BR>　　一般情况下，有以下两点作为依据：<BR>　　<BR>　　1) 如果PL/SQL程序返回多多行数据给另外一个PL/SQL程序的话，这里就建议使用集合，因为这样可以利用集合的批收集（bulk collection）来提高从数据库提取数据的速度。<BR>　　<BR>　　2) 如果需要在PL/SQL程序的环境中把数据返回到宿主语言环境中（如Sql*plus,c,delphi等），这时应该使用游标变量来返回这些数据，因为几乎所有的宿主语言都支持游标变量，但不是所有的宿主语言都支持集合。这样可以增强程序的可移植性。<BR>　　<BR>　　<B>5．如何更有效的在PL/SQL中使用游标？<BR>　　</B><BR>　　游标是PL/SQL中一个非常重要的概念，对数据库的检索主要依靠游标来操作。在PL/SQL中有两类游标，一类是隐式游标，如select clno into v_clno from table_detail.另外一类是显式游标，如cursor v_cur is select clno from table_detail。对于游标的使用这里给出以下几点建议：<BR>　　<BR>　　1) 尽可能的使用bulk collection。它能够较大的提高运行性能，在Oracl9i的第二版，甚至可以使用bulk collection来直接将数据写入到记录表<BR>　　<BR>　　2) 尽量使用显式游标来处理，因为相对于隐式游标来说，显式游标的速度更快一些。<BR>　　<BR>　　3) 如果查询的表很小或者是静态的，可以把该表缓存到一个包级的集合里。这样，你的查询函数就直接从集合里（即进程全局区，PGA cache），而不是从系统全局区（SGA）来取数据，这样的处理速度会提升很多。<img src ="http://www.blogjava.net/konhon/aggbug/21780.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-11-29 10:06 <a href="http://www.blogjava.net/konhon/archive/2005/11/29/21780.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE里取随机数的方法 </title><link>http://www.blogjava.net/konhon/archive/2005/11/29/21779.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Tue, 29 Nov 2005 02:05:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/11/29/21779.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/21779.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/11/29/21779.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/21779.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/21779.html</trackback:ping><description><![CDATA[在你的工作中是否会为了某个活动要随机取出一些符合条件的EMAIL或者手机号码用户，来颁发获奖通知或其它消息？<BR>　　<BR>　　如果是的话，可以用oracle里生成随机数的PL/SQL, 目录文件名在：/ORACLE_HOME/rdbms/admin/dbmsrand.sql。<BR>　　<BR>　　用之前先要在sys用户下编译:<BR>　　<BR>　　SQL&gt;@/ORACLE_HOME/rdbms/admin/dbmsrand.sql<BR>　　<BR>　　它实际是在sys用户下生成一个dbms_random程序包，同时生成公有同义词，并授权给所有数据库用户有执行的权限。<BR>　　<BR>　　使用dbms_random程序包, 取出随机数据的方法：<BR>　　<BR>　　<B>1. 先创建一个唯一增长的序列号tmp_id</B><BR>　　<BR>　　create sequence tmp_id increment by 1 start with 1 maxvalue 9999999 nocycle nocache;<BR>　　<BR>　　<B>2. 然后创建一个临时表tmp_1，把符合本次活动条件的记录全部取出来。</B><BR>　　<BR>　　create table tmp_1 as select tmp_id.nextval as id,email,mobileno from 表名 where 条件;<BR>　　<BR>　　找到最大的id号：<BR>　　<BR>　　select max(id) from tmp_1;<BR>　　<BR>　　假设为5000<BR>　　<BR>　　<B>3. 设定一个生成随机数的种子</B><BR>　　<BR>　　execute dbms_random.seed(12345678);<BR>　　<BR>　　或者<BR>　　<BR>　　execute dbms_random.seed(TO_CHAR(SYSDATE,'MM-DD-YYYY HH24:MI:SS'));<BR>　　<BR>　　<B>4. 调用随机数生成函数dbms_random.value生成临时表tmp_2</B><BR>　　<BR>　　假设随机取200个<BR>　　<BR>　　create table tmp_2 as select trunc(dbms_random.value(1,5000)) as id from tmp_1 where rownum&lt;201;<BR>　　<BR>　　[ 说明：dbms_random.value(1,5000)是取1到5000间的随机数，会有小数,<BR>　　trunc函数对随机数字取整，才能和临时表的整数ID字段相对应。<BR>　　<BR>　　注意：如果tmp_1记录比较多(10万条以上)，也可以找一个约大于两百行的表(假如是tmp_3)来生成tmp_2<BR>　　<BR>　　create table tmp_2 as select trunc(dbms_random.value(1,5000)) as id from tmp_3 where rownum&lt;201; ]<BR>　　<BR>　　<B>5. tmp_1和tmp_2相关联取得符合条件的200用户</B><BR>　　<BR>　　select t1.mobileno,t1.email from tmp_1 t1,tmp_2 t2 where t1.id=t2.id;<BR>　　<BR>　　[ 注意：如果tmp_1记录比较多(10万条以上)，需要在id字段上建索引。]<BR>　　<BR>　　也可以输出到文本文件：<BR>　　<BR>　　set pagesize 300;<BR>　　spool /tmp/200.txt;<BR>　　select t1.mobileno,t1.email from tmp_1 t1,tmp_2 t2 where t1.id=t2.id order by t1.mobileno;<BR>　　spool off;<BR>　　<BR>　　<B>6. 用完后，删除临时表tmp_1、tmp_2和序列号tmp_id。</B><img src ="http://www.blogjava.net/konhon/aggbug/21779.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-11-29 10:05 <a href="http://www.blogjava.net/konhon/archive/2005/11/29/21779.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PL/SQL的一些语法 </title><link>http://www.blogjava.net/konhon/archive/2005/11/29/21778.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Tue, 29 Nov 2005 02:03:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/11/29/21778.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/21778.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/11/29/21778.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/21778.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/21778.html</trackback:ping><description><![CDATA[<P>
<TABLE cellSpacing=0 cellPadding=0 width=680 border=0>
<TBODY>
<TR>
<TD vAlign=top>
<TABLE class=zhi14 height=38 cellSpacing=0 cellPadding=0 width=648 align=center border=0>
<TBODY>
<TR>
<TD style="WORD-BREAK: break-all" vAlign=top width=648 height=18><BR>　　写一些关于PL/SQL的语法，免得等到用到的时候还要去乱翻。<BR>　　１。控制流程(if,while)<BR>　　２。循环(for)<BR>　　３。游标(cursor)<BR>　　４。异常处理(exception）<BR>　　<BR>　　<B>1。控制流程（）</B><BR>　　<BR>　　A.条件语句<BR>　　IF &lt;statement&gt; THEN<BR>　　PL/SQL<BR>　　END IF;<BR>　　<BR>　　IF &lt;statement&gt; THEN<BR>　　PL/SQL<BR>　　ELSE<BR>　　PL/SQL<BR>　　END IF;<BR>　　<BR>　　IF &lt;statement&gt; THEN<BR>　　PL/SQL<BR>　　ELSIF &lt;statement&gt; THEN<BR>　　PL/SQL<BR>　　END IF;<BR>　　<BR>　　<B>2。循环</B><BR>　　<BR>　　A.simple loop<BR>　　LOOP<BR>　　SQL<BR>　　EXIT WHEN &lt;statement&gt;;<BR>　　END LOOP;<BR>　　<BR>　　LOOP<BR>　　SQL<BR>　　IF &lt;statement&gt; THEN<BR>　　EXIT;<BR>　　END IF;<BR>　　END LOOP;<BR>　　<BR>　　B.While loop<BR>　　WHILE　&lt;statement&gt; LOOP<BR>　　SQL<BR>　　END LOOP;<BR>　　<BR>　　C.For loop<BR>　　FOR $counter in $low .. $high LOOP<BR>　　SQL<BR>　　END LOOP<BR>　　<BR>　　<B>3。游标</B><BR>　　<BR>　　在PL/SQL程序中定义的游标叫做显式游标。<BR>　　<BR>　　A.显式游标的处理由四个部分组成：<BR>　　cursor $cursorname is $Query;　　　--定义游标<BR>　　open $cursorname;　　　　　　　　　--打开游标<BR>　　fetch $cursorname into $othervariable　　--把游标中的东西取出<BR>　　close $cursorname　　--关闭游标<BR>　　<BR>　　B.游标属性<BR>　　%found　　　　 布尔型属性，当最近一次读纪录成功时，为true.<BR>　　%nofound　　　　　　　　　　　　　　　　失败时，为false.<BR>　　%isopen<BR>　　%rowcount　　　返回已从游标中读取的记录数。<BR>　　<BR>　　C.参数化游标<BR>　　<BR>　　所有的SQL语句在上下文区内部都是可执行的，因此都有一个游标指向上下文区，此游标就是所谓的SQL游标。<BR>　　<BR>　　与显式游标不同，SQL游标不被程序打开和关闭。<BR>　　<BR>　　<B>4.异常处理概念</B><BR>　　<BR>　　异常处理是用来处理正常执行过程中未预料的事件。如果PL/SQL程序块一旦产生异常而又没有指出如何处理时，程序会自动终止。<BR>　　<BR>　　异常处理部分放在PL/SQL的后半部分，结构为：<BR>　　<BR>　　EXCEPTION<BR>　　WHEN first_exception THEN &lt;code to handle first exception&gt;<BR>　　WHEN second_exception THEN &lt;code to handle second exception&gt;<BR>　　WHEN OTHERS THEN &lt;code to handle second exception&gt;　--OTHERS必须放在最后<BR>　　<BR>　　异常分为预定义和用户定义两种。<BR>　　<BR>　　用户定义的异常是通过显式使用RAISE语句来引发。如<BR>　　<BR>　　DECLARE<BR>　　e_TooManyStudents EXCEPTION;　-- 类型为Exception，用于指示错误条件<BR>　　v_CurrentStudents NUMBER(3);　-- HIS-101学生注册当前号<BR>　　v_MaxStudents NUMBER(3);　　　-- HIS-101学生注册允许的最大号<BR>　　<BR>　　BEGIN<BR>　　/* 找出注册学生当前号和允许的最大号 */<BR>　　<BR>　　SELECT current_students, max_students<BR>　　<BR>　　INTO v_CurrentStudents, v_MaxStudents<BR>　　<BR>　　FROM classes<BR>　　<BR>　　WHERE department = 'HIS' AND course = 101;<BR>　　<BR>　　/* 检查学生的号 */<BR>　　<BR>　　IF v_CurrentStudents &gt; v_MaxStudents THEN<BR>　　<BR>　　/* 太多的学生注册，则触发例外处理 */<BR>　　<BR>　　RAISE e_TooManyStudents;<BR>　　<BR>　　END IF;<BR>　　<BR>　　EXCEPTION<BR>　　<BR>　　WHEN e_TooManyStudents THEN<BR>　　<BR>　　/* 当太多的学生注册，就插入信息解释发生过错误 */<BR>　　<BR>　　INSERT INTO log_table (info) VALUES ('History 101 has ' || v_CurrentStudents ||<BR>　　<BR>　　'students: max allowed is ' || v_MaxStudents);<BR>　　<BR>　　END;<BR>　　<BR>　　END;<BR>　　<BR>　　用户定义的的异常处理<BR>　　<BR>　　可以使用RAISE_APPLICATION_ERROR来创建自己的错误处理：<BR>　　<BR>　　RAISE_APPLICATION_ERROR(error_number,error_message,[keep_errors]);<BR>　　<BR>　　其中error_number是从-20000到-20999之间的参数；error_message是相应的提示信息，小于512字节。如：<BR>　　<BR>　　CREATE OR REPLACE PROCEDURE Register (<BR>　　p_StudentID IN students.id%TYPE,<BR>　　p_Department IN classes.department%TYPE,<BR>　　p_Course IN classes.course%TYPE) AS<BR>　　v_CurrentStudents NUMBER;　-- 班上学生的当前号<BR>　　v_MaxStudents NUMBER;　　　-- 班上学生的最大号<BR>　　<BR>　　BEGIN<BR>　　/* 找出学生的当前号和最大号 */<BR>　　SELECT current_students, max_students<BR>　　INTO v_CurrentStudents, v_MaxStudents<BR>　　FROM classes<BR>　　WHERE course = p_Course<BR>　　AND department = p_Department;<BR>　　<BR>　　/* 确认另外的学生是否有足够的教室*/<BR>　　IF v_CurrentStudents + 1 &gt; v_MaxStudents THEN<BR>　　RAISE_APPLICATION_ERROR(-20000, 'Can''t add more students to ' ||<BR>　　p_Department || ' ' || p_Course);<BR>　　END IF;<BR>　　<BR>　　/* 加一个学生在本班 */<BR>　　ClassPackage.AddStudent(p_StudentID, p_Department, p_Course);<BR>　　<BR>　　EXCEPTION<BR>　　WHEN NO_DATA_FOUND THEN<BR>　　RAISE_APPLICATION_ERROR(-20001, p_Department || ' ' || p_Course ||<BR>　　' doesn''t exist!');<BR>　　END Register; </TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD vAlign=top height=225>
<TABLE cellSpacing=0 cellPadding=0 width=679 align=center border=0>
<TBODY>
<TR>
<TD width=687>&nbsp;</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></P><img src ="http://www.blogjava.net/konhon/aggbug/21778.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-11-29 10:03 <a href="http://www.blogjava.net/konhon/archive/2005/11/29/21778.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Useful SQL reference </title><link>http://www.blogjava.net/konhon/archive/2005/11/29/21777.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Tue, 29 Nov 2005 02:01:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/11/29/21777.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/21777.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/11/29/21777.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/21777.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/21777.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 一些有用的SQL，都是oracle manage常用的。<BR>　　<BR>　　列在这里做参考，因为太难记了。<BR>　　<BR>　　时时更新。<BR>　　<BR>　　<B>1。监控当前数据库谁在运行什么SQL 语句<BR>　　</B><BR>　　SELECT osuser, username, sql_text from v$session a, v$sqltext b<BR>　　where a.sql_address =b.address order by address, piece;<BR>　　<BR>　　<B>2。查看碎片程度高的表<BR>　　</B><BR>　　SELECT segment_name table_name , COUNT(*) extents<BR>　　FROM dba_segments WHERE owner NOT IN ('SYS', 'SYSTEM') GROUP BY segment_name<BR>　　HAVING COUNT(*) = (SELECT MAX( COUNT(*) ) FROM dba_segments GROUP BY segment_name);<BR>　　<BR>　　<B>3。表空间使用状态<BR>　　</B><BR>　　select a.file_id "FileNo",a.tablespace_name "Tablespace_name",<BR>　　round(a.bytes/1024/1024,4) "Total MB",<BR>　　round((a.bytes-sum(nvl(b.bytes,0)))/1024/1024,4) "Used MB",<BR>　　round(sum(nvl(b.bytes,0))/1024/1024,4) "Free MB",<BR>　　round(sum(nvl(b.bytes,0))/a.bytes*100,4) "%Free"<BR>　　from dba_data_files a, dba_free_space b<BR>　　where a.file_id=b.file_id(+)<BR>　　group by a.tablespace_name,<BR>　　a.file_id,a.bytes order by a.tablespace_name<BR>　　<BR>　　<B>4。查看USER<BR>　　</B><BR>　　SELECT OSUSER,SERIAL#<BR>　　FROM V$SESSION, V$SQL<BR>　　WHERE<BR>　　V$SESSION.SQL_ADDRESS=V$SQL.ADDRESS AND<BR>　　V$SESSION.STATUS = 'ACTIVE';<BR>　　<BR>　　<B>5。监控 SGA 的命中率<BR>　　</B><BR>　　select a.value + b.value "logical_reads", c.value "phys_reads",<BR>　　round(100 * ((a.value+b.value)-c.value) / (a.value+b.value)) "BUFFER HIT RATIO"<BR>　　from v$sysstat a, v$sysstat b, v$sysstat c<BR>　　where a.statistic# = 38 and b.statistic# = 39<BR>　　and c.statistic# = 40;<BR>　　<BR>　　<B>6。监控 SGA 中字典缓冲区的命中率<BR>　　</B><BR>　　select parameter, gets,Getmisses , getmisses/(gets+getmisses)*100 "miss ratio",<BR>　　(1-(sum(getmisses)/ (sum(gets)+sum(getmisses))))*100 "Hit ratio"<BR>　　from v$rowcache<BR>　　where gets+getmisses &lt;&gt;0<BR>　　group by parameter, gets, getmisses;<BR>　　<BR>　　<B>7。监控 SGA 中共享缓存区的命中率，应该小于1%<BR>　　</B><BR>　　select sum(pinhits-reloads)/sum(pins) "hit radio",sum(reloads)/sum(pins) "reload percent"<BR>　　from v$librarycache;<BR>　　<BR>　　<B>8。监控内存和硬盘的排序比率，最好使它小于 .10，增加 sort_area_size<BR>　　</B><BR>　　SELECT name, value FROM v$sysstat WHERE name IN ('sorts (memory)', 'sorts (disk)');<BR>　　<BR>　　<B>9。哪筆數據正在被人update，而且是被誰正在update<BR>　　</B><BR>　　select a.os_user_name, a.oracle_username,a.object_id,c.object_name,c.object_type<BR>　　from v$locked_object a, dba_objects c<BR>　　where a.object_id=c.object_id<img src ="http://www.blogjava.net/konhon/aggbug/21777.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-11-29 10:01 <a href="http://www.blogjava.net/konhon/archive/2005/11/29/21777.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL PLUS编辑器的一些常用设置 </title><link>http://www.blogjava.net/konhon/archive/2005/11/29/21776.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Tue, 29 Nov 2005 02:00:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/11/29/21776.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/21776.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/11/29/21776.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/21776.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/21776.html</trackback:ping><description><![CDATA[<TABLE cellSpacing=0 cellPadding=0 width=680 border=0>
<TBODY>
<TR>
<TD vAlign=top height=63>
<TABLE class=zhi12 cellSpacing=0 cellPadding=0 width="96%" align=center border=0>
<TBODY>
<TR>
<TD style="FONT-WEIGHT: normal; FONT-SIZE: 16pt; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal" height=49></TD></TR>
<SCRIPT language=javascript>
	 document.all.location1.value=location.href
</SCRIPT>

<SCRIPT language=JavaScript>
function AddPortal (FpanelID)
{
	var exe ="Tencent://AddPortal/?Menu=Yes&PanelID="+FpanelID; 		
	location.href=exe;				
}
</SCRIPT>
&nbsp;
<TR>
<TD bgColor=#e2ffff height=28></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD vAlign=top>
<TABLE class=zhi14 height=38 cellSpacing=0 cellPadding=0 width=648 align=center border=0>
<TBODY>
<TR>
<TD width=648 height=20>&nbsp;</TD></TR>
<TR>
<TD style="WORD-BREAK: break-all" vAlign=top width=648 height=18><BR>　　set linedize 150　 //每行显示的字符<BR>　　set time on　　　　//在提示符前显示系统时间<BR>　　SQL&gt; set time on<BR>　　12:25:08 SQL&gt;<BR>　　<BR>　　set serveroutput on/off　　//输出显示<BR>　　set long 200　　　//每字段显示的字符长度，如某列的值显示不完，调次值<BR>　　col column_name format a10　//显示列的宽度<BR>　　<BR>　　set linedize 150　 //每行显示的字符<BR>　　set time on　　　　//在提示符前显示系统时间<BR>　　SQL&gt; set time on<BR>　　12:25:08 SQL&gt;<BR>　　<BR>　　set serveroutput on/off　　//输出显示<BR>　　set long 200　　　//每字段显示的字符长度，如某列的值显示不完，调次值<BR>　　col column_name format a10　//显示列的宽度<BR>　　col ename heading 雇员　　//别名显示<BR>　　<BR>　　spool d:\temp\sqlout.txt　//输出为文档<BR>　　spool off<BR>　　<BR>　　SQL&gt; alter session set NLS_LANGUAGE='AMERICAN'; 改变session的语言显示<BR>　　SQL&gt; alter session set NLS_LANGUAGE='SIMPLIFIED CHINESE';<BR>　　<BR>　　SQL&gt; set timi on //显示提示SQL语句执行所花的时间 </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><img src ="http://www.blogjava.net/konhon/aggbug/21776.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-11-29 10:00 <a href="http://www.blogjava.net/konhon/archive/2005/11/29/21776.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQLPLUS命令的使用大全</title><link>http://www.blogjava.net/konhon/archive/2005/11/10/19077.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Thu, 10 Nov 2005 00:14:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/11/10/19077.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/19077.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/11/10/19077.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/19077.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/19077.html</trackback:ping><description><![CDATA[<SPAN id=ArticleContent1_ArticleContent1_lblContent>&nbsp;
<P><STRONG>摘录,非本人原创</STRONG></P>
<P> <BR>1. 执行一个SQL脚本文件 <BR>SQL&gt;start file_name <BR>SQL&gt;@ file_name <BR>我们可以将多条sql语句保存在一个文本文件中，这样当要执行这个文件中的所有的sql语句时，用上面的任一命令即可，这类似于dos中的批处理。 <BR>&nbsp; <BR>2. 对当前的输入进行编辑 <BR>SQL&gt;edit <BR>&nbsp; <BR>3. 重新运行上一次运行的sql语句 <BR>SQL&gt;/ <BR>&nbsp; <BR>4. 将显示的内容输出到指定文件 <BR>SQL&gt; SPOOL file_name <BR>&nbsp;&nbsp; 在屏幕上的所有内容都包含在该文件中，包括你输入的sql语句。 <BR>&nbsp; <BR>5. 关闭spool输出 <BR>SQL&gt; SPOOL OFF <BR>&nbsp;&nbsp; 只有关闭spool输出，才会在输出文件中看到输出的内容。 <BR>&nbsp; </P>
<P><BR>6．显示一个表的结构 <BR>SQL&gt; desc table_name <BR>&nbsp; <BR>7. COL命令： <BR>主要格式化列的显示形式。 <BR>该命令有许多选项，具体如下： <BR>COL[UMN] [{ column|expr} [ option ...]] <BR>Option选项可以是如下的子句: <BR>ALI[AS] alias <BR>CLE[AR] <BR>FOLD_A[FTER] <BR>FOLD_B[EFORE] <BR>FOR[MAT] format <BR>HEA[DING] text <BR>JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]} <BR>LIKE { expr|alias} <BR>NEWL[INE] <BR>NEW_V[ALUE] variable <BR>NOPRI[NT]|PRI[NT] <BR>NUL[L] text <BR>OLD_V[ALUE] variable <BR>ON|OFF <BR>WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED] <BR>&nbsp; <BR>1). 改变缺省的列标题 <BR>COLUMN column_name HEADING column_heading <BR>For example: <BR>Sql&gt;select * from dept; <BR>&nbsp;&nbsp;&nbsp;&nbsp; DEPTNO DNAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LOC <BR>---------- ---------------------------- --------- <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10 ACCOUNTING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NEW YORK <BR>sql&gt;col&nbsp; LOC heading location <BR>sql&gt;select * from dept; <BR>&nbsp;&nbsp;&nbsp; DEPTNO DNAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location <BR>--------- ---------------------------- ----------- <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10 ACCOUNTING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NEW YORK <BR>&nbsp; <BR>2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上： <BR>Sql&gt;select * from emp <BR>Department&nbsp; name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Salary <BR>---------- ---------- ---------- <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10 aaa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>SQL&gt; COLUMN ENAME HEADING ’Employee|Name’ <BR>Sql&gt;select * from emp <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Employee <BR>Department&nbsp; name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Salary <BR>---------- ---------- ----------&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10 aaa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 11 <BR>note: the col heading turn into two lines from one line. <BR>&nbsp; <BR>3). 改变列的显示长度： <BR>FOR[MAT] format <BR>Sql&gt;select empno,ename,job from emp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EMPNO ENAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JOB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>---------- ----------&nbsp;&nbsp;&nbsp;&nbsp; --------- <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7369 SMITH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLERK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7499 ALLEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SALESMAN&nbsp;&nbsp; <BR>7521 WARD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SALESMAN&nbsp;&nbsp; <BR>Sql&gt; col ename format a40 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EMPNO ENAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JOB <BR>----------&nbsp;&nbsp; ----------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --------- <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7369 SMITH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLERK <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7499 ALLEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SALESMAN <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7521 WARD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SALESMAN <BR>&nbsp; <BR>4). 设置列标题的对齐方式 <BR>JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]} <BR>SQL&gt; col ename justify center <BR>SQL&gt; / <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EMPNO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JOB <BR>----------&nbsp;&nbsp; ----------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --------- <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7369 SMITH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLERK <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7499 ALLEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SALESMAN <BR>7521 WARD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SALESMAN <BR>对于NUMBER型的列，列标题缺省在右边，其它类型的列标题缺省在左边 <BR>&nbsp; <BR>5). 不让一个列显示在屏幕上 <BR>NOPRI[NT]|PRI[NT] <BR>SQL&gt; col job noprint <BR>SQL&gt; / <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EMPNO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENAME <BR>----------&nbsp;&nbsp;&nbsp;&nbsp; ---------------------------------------- <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7369 SMITH <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7499 ALLEN <BR>7521 WARD <BR>&nbsp; <BR>6). 格式化NUMBER类型列的显示： <BR>SQL&gt; COLUMN SAL FORMAT $99,990 <BR>SQL&gt; / <BR>Employee <BR>Department Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Salary&nbsp;&nbsp;&nbsp; Commission <BR>---------- ---------- --------- ---------- <BR>30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ALLEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $1,600&nbsp;&nbsp;&nbsp; 300 <BR>&nbsp; <BR>7). 显示列值时，如果列值为NULL值，用text值代替NULL值 <BR>COMM NUL[L] text <BR>SQL&gt;COL COMM NUL[L] text <BR>&nbsp; <BR>8). 设置一个列的回绕方式 <BR>WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED] <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COL1 <BR>-------------------- <BR>HOW ARE YOU? <BR>&nbsp; <BR>SQL&gt;COL COL1 FORMAT A5 <BR>SQL&gt;COL COL1 WRAPPED <BR>COL1 <BR>----- <BR>HOW A <BR>RE YO <BR>U? <BR>&nbsp; <BR>SQL&gt; COL COL1 WORD_WRAPPED <BR>COL1 <BR>----- <BR>HOW <BR>ARE <BR>YOU? <BR>&nbsp; <BR>SQL&gt; COL COL1 WORD_WRAPPED <BR>COL1 <BR>----- <BR>HOW A <BR>&nbsp; <BR>9). 显示列的当前的显示属性值 <BR>SQL&gt; COLUMN column_name <BR>&nbsp; <BR>10). 将所有列的显示属性设为缺省值 <BR>SQL&gt; CLEAR COLUMNS <BR>&nbsp; <BR>8. 屏蔽掉一个列中显示的相同的值 <BR>BREAK ON break_column <BR>SQL&gt; BREAK ON DEPTNO <BR>SQL&gt; SELECT DEPTNO, ENAME, SAL <BR>FROM EMP <BR>&nbsp; WHERE SAL &lt; 2500 <BR>&nbsp; ORDER BY DEPTNO; <BR>DEPTNO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SAL <BR>---------- ----------- --------- <BR>10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLARK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2450 <BR>MILLER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1300 <BR>20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SMITH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 800 <BR>ADAMS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1100 <BR>&nbsp; <BR>9. 在上面屏蔽掉一个列中显示的相同的值的显示中，每当列值变化时在值变化之前插入n个空行。 <BR>BREAK ON break_column SKIP n <BR>&nbsp; <BR>SQL&gt; BREAK ON DEPTNO SKIP 1 <BR>SQL&gt; / <BR>DEPTNO ENAME SAL <BR>---------- ----------- --------- <BR>10 CLARK 2450 <BR>MILLER 1300 <BR>&nbsp; <BR>20 SMITH 800 <BR>ADAMS 1100 <BR>&nbsp; <BR>10. 显示对BREAK的设置 <BR>SQL&gt; BREAK <BR>&nbsp; <BR>11. 删除6、7的设置 <BR>SQL&gt; CLEAR BREAKS <BR>&nbsp; <BR>12. Set 命令： <BR>该命令包含许多子命令： <BR>SET system_variable value <BR>system_variable value 可以是如下的子句之一： <BR>APPI[NFO]{ON|OFF|text} <BR>ARRAY[SIZE] {15|n} <BR>AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n} <BR>AUTOP[RINT] {ON|OFF} <BR>AUTORECOVERY [ON|OFF] <BR>AUTOT[RACE] {ON|OFF|TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]] <BR>BLO[CKTERMINATOR] {.|c} <BR>CMDS[EP] {;|c|ON|OFF} <BR>COLSEP {_|text} <BR>COM[PATIBILITY]{V7|V8|NATIVE} <BR>CON[CAT] {.|c|ON|OFF} <BR>COPYC[OMMIT] {0|n} <BR>COPYTYPECHECK {ON|OFF} <BR>DEF[INE] {&amp;|c|ON|OFF} <BR>DESCRIBE [DEPTH {1|n|ALL}][LINENUM {ON|OFF}][INDENT {ON|OFF}] <BR>ECHO {ON|OFF} <BR>EDITF[ILE] file_name[.ext] <BR>EMB[EDDED] {ON|OFF} <BR>ESC[APE] {|c|ON|OFF} <BR>FEED[BACK] {6|n|ON|OFF} <BR>FLAGGER {OFF|ENTRY |INTERMED[IATE]|FULL} <BR>FLU[SH] {ON|OFF} <BR>HEA[DING] {ON|OFF} <BR>HEADS[EP] {||c|ON|OFF} <BR>INSTANCE [instance_path|LOCAL] <BR>LIN[ESIZE] {80|n} <BR>LOBOF[FSET] {n|1} <BR>LOGSOURCE [pathname] <BR>LONG {80|n} <BR>LONGC[HUNKSIZE] {80|n} <BR>MARK[UP] HTML [ON|OFF] [HEAD text] [BODY text] [ENTMAP {ON|OFF}] [SPOOL <BR>{ON|OFF}] [PRE[FORMAT] {ON|OFF}] <BR>NEWP[AGE] {1|n|NONE} <BR>NULL text <BR>NUMF[ORMAT] format <BR>NUM[WIDTH] {10|n} <BR>PAGES[IZE] {24|n} <BR>PAU[SE] {ON|OFF|text} <BR>RECSEP {WR[APPED]|EA[CH]|OFF} <BR>RECSEPCHAR {_|c} <BR>SERVEROUT[PUT] {ON|OFF} [SIZE n] [FOR[MAT] {WRA[PPED]|WOR[D_ <BR>WRAPPED]|TRU[NCATED]}] <BR>SHIFT[INOUT] {VIS[IBLE]|INV[ISIBLE]} <BR>SHOW[MODE] {ON|OFF} <BR>SQLBL[ANKLINES] {ON|OFF} <BR>SQLC[ASE] {MIX[ED]|LO[WER]|UP[PER]} <BR>SQLCO[NTINUE] {&gt; |text} <BR>SQLN[UMBER] {ON|OFF} <BR>SQLPRE[FIX] {#|c} <BR>SQLP[ROMPT] {SQL&gt;|text} <BR>SQLT[ERMINATOR] {;|c|ON|OFF} <BR>SUF[FIX] {SQL|text} <BR>TAB {ON|OFF} <BR>TERM[OUT] {ON|OFF} <BR>TI[ME] {ON|OFF} <BR>TIMI[NG] {ON|OFF} <BR>TRIM[OUT] {ON|OFF} <BR>TRIMS[POOL] {ON|OFF} <BR>UND[ERLINE] {-|c|ON|OFF} <BR>VER[IFY] {ON|OFF} <BR>WRA[P] {ON|OFF} <BR>&nbsp; <BR>1). 设置当前session是否对修改的数据进行自动提交 <BR>SQL&gt;SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n} <BR>&nbsp; <BR>2)．在用start命令执行一个sql脚本时，是否显示脚本中正在执行的SQL语句 <BR>SQL&gt; SET ECHO {ON|OFF} <BR>&nbsp; <BR>3).是否显示当前sql语句查询或修改的行数 <BR>SQL&gt; SET FEED[BACK] {6|n|ON|OFF} <BR>&nbsp;&nbsp; 默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ，则不管查询到多少行都返回。当为off 时，一律不显示查询的行数 <BR>&nbsp; <BR>4).是否显示列标题 <BR>SQL&gt; SET HEA[DING] {ON|OFF} <BR>当set heading off 时，在每页的上面不显示列标题，而是以空白行代替 <BR>&nbsp; <BR>5).设置一行可以容纳的字符数 <BR>SQL&gt; SET LIN[ESIZE] {80|n} <BR>&nbsp;&nbsp; 如果一行的输出内容大于设置的一行可容纳的字符数，则折行显示。 <BR>&nbsp; <BR>6).设置页与页之间的分隔 <BR>SQL&gt; SET NEWP[AGE] {1|n|NONE} <BR>当set newpage 0 时，会在每页的开头有一个小的黑方框。 <BR>当set newpage n 时，会在页和页之间隔着n个空行。 <BR>当set newpage none 时，会在页和页之间没有任何间隔。 <BR>&nbsp; <BR>7).显示时，用text值代替NULL值 <BR>SQL&gt; SET NULL text <BR>&nbsp; <BR>8).设置一页有多少行数 <BR>SQL&gt; SET PAGES[IZE] {24|n} <BR>如果设为0，则所有的输出内容为一页并且不显示列标题 <BR>&nbsp; <BR>9).是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息。 <BR>SQL&gt; SET SERVEROUT[PUT] {ON|OFF}&nbsp; <BR>在编写存储过程时，我们有时会用dbms_output.put_line将必要的信息输出，以便对存储过程进行调试，只有将serveroutput变量设为on后，信息才能显示在屏幕上。 <BR>&nbsp; <BR>10).当SQL语句的长度大于LINESIZE时，是否在显示时截取SQL语句。 <BR>SQL&gt; SET WRA[P] {ON|OFF} <BR>&nbsp;&nbsp; 当输出的行的长度大于设置的行的长度时（用set linesize n命令设置），当set wrap on时，输出行的多于的字符会另起一行显示，否则，会将输出行的多于字符切除，不予显示。 <BR>&nbsp; <BR>11).是否在屏幕上显示输出的内容，主要用与SPOOL结合使用。 <BR>SQL&gt; SET TERM[OUT] {ON|OFF} <BR>&nbsp;&nbsp; 在用spool命令将一个大表中的内容输出到一个文件中时，将内容输出在屏幕上会耗费大量的时间，设置set termspool off后，则输出的内容只会保存在输出文件中，不会显示在屏幕上，极大的提高了spool的速度。 <BR>&nbsp; <BR>12).将SPOOL输出中每行后面多余的空格去掉 <BR>SQL&gt; SET TRIMS[OUT] {ON|OFF}&nbsp; <BR>&nbsp;&nbsp;&nbsp; <BR>13)显示每个sql语句花费的执行时间 <BR>set TIMING&nbsp; {ON|OFF} <BR>&nbsp; <BR>14．修改sql buffer中的当前行中，第一个出现的字符串 <BR>C[HANGE] /old_value/new_value <BR>SQL&gt; l <BR>&nbsp;&nbsp; 1* select * from dept <BR>SQL&gt; c/dept/emp <BR>&nbsp;&nbsp; 1* select * from emp <BR>&nbsp; <BR>15．编辑sql buffer中的sql语句 <BR>EDI[T] <BR>&nbsp; <BR>16．显示sql buffer中的sql语句，list n显示sql buffer中的第n行，并使第n行成为当前行 <BR>L[IST] [n] <BR>&nbsp; <BR>17．在sql buffer的当前行下面加一行或多行 <BR>I[NPUT] <BR>&nbsp; <BR>18．将指定的文本加到sql buffer的当前行后面 <BR>A[PPEND] <BR>SQL&gt; select deptno, <BR>&nbsp;&nbsp; 2&nbsp; dname <BR>&nbsp;&nbsp; 3&nbsp; from dept; <BR>&nbsp;&nbsp;&nbsp;&nbsp; DEPTNO DNAME <BR>---------- -------------- <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10 ACCOUNTING <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20 RESEARCH <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30 SALES <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 40 OPERATIONS <BR>&nbsp; <BR>SQL&gt; L 2 <BR>&nbsp;&nbsp; 2* dname <BR>SQL&gt; a ,loc <BR>&nbsp;&nbsp; 2* dname,loc <BR>SQL&gt; L <BR>&nbsp;&nbsp; 1&nbsp; select deptno, <BR>&nbsp;&nbsp; 2&nbsp; dname,loc <BR>&nbsp;&nbsp; 3* from dept <BR>SQL&gt; / <BR>&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; DEPTNO DNAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LOC <BR>---------- -------------- ------------- <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10 ACCOUNTING&nbsp;&nbsp;&nbsp;&nbsp; NEW YORK <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20 RESEARCH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DALLAS <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30 SALES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CHICAGO <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 40 OPERATIONS&nbsp;&nbsp;&nbsp;&nbsp; BOSTON <BR>&nbsp; <BR>19．将sql buffer中的sql语句保存到一个文件中 <BR>SAVE file_name <BR>&nbsp; <BR>20．将一个文件中的sql语句导入到sql buffer中 <BR>GET file_name <BR>&nbsp; <BR>21．再次执行刚才已经执行的sql语句 <BR>RUN <BR>or <BR>/ <BR>&nbsp; <BR>22．执行一个存储过程 <BR>EXECUTE procedure_name <BR>&nbsp; <BR>23．在sql*plus中连接到指定的数据库 <BR>CONNECT <A href="mailto:user_name/passwd@db_alias">user_name/passwd@db_alias</A> <BR>&nbsp; <BR>24．设置每个报表的顶部标题 <BR>TTITLE <BR>&nbsp; <BR>25．设置每个报表的尾部标题 <BR>BTITLE <BR>&nbsp; <BR>26．写一个注释 <BR>REMARK [text] <BR>&nbsp; <BR>27．将指定的信息或一个空行输出到屏幕上 <BR>PROMPT [text] <BR>&nbsp; <BR>28．将执行的过程暂停，等待用户响应后继续执行 <BR>PAUSE [text] <BR>&nbsp; <BR>Sql&gt;PAUSE Adjust paper and press RETURN to continue. <BR>&nbsp; <BR>29．将一个数据库中的一些数据拷贝到另外一个数据库（如将一个表的数据拷贝到另一个数据库） <BR>COPY {FROM database | TO database | FROM database TO database} <BR>{APPEND|CREATE|INSERT|REPLACE} destination_table <BR>[(column, column, column, ...)] USING query <BR>&nbsp; <BR>sql&gt;COPY FROM <A href="mailto:SCOTT/TIGER@HQ">SCOTT/TIGER@HQ</A> TO <A href="mailto:JOHN/CHROME@WEST">JOHN/CHROME@WEST</A>&nbsp; <BR>create emp_temp <BR>USING SELECT * FROM EMP <BR>&nbsp; <BR>30．不退出sql*plus，在sql*plus中执行一个操作系统命令： <BR>HOST <BR>&nbsp; <BR>Sql&gt; host hostname <BR>该命令在windows下可能被支持。 <BR>&nbsp; <BR>31．在sql*plus中，切换到操作系统命令提示符下，运行操作系统命令后，可以再次切换回sql*plus： <BR>! <BR>&nbsp; <BR>sql&gt;! <BR>$hostname <BR>$exit <BR>sql&gt; <BR>&nbsp; <BR>该命令在windows下不被支持。 <BR>&nbsp; <BR>32．显示sql*plus命令的帮助 <BR>HELP <BR>如何安装帮助文件： <BR>Sql&gt;@ ?sqlplusadminhelphlpbld.sql ?sqlplusadminhelphelpus.sql <BR>Sql&gt;help index <BR>&nbsp; <BR>33．显示sql*plus系统变量的值或sql*plus环境变量的值 <BR>Syntax <BR>SHO[W] option <BR>where option represents one of the following terms or clauses: <BR>system_variable <BR>ALL <BR>BTI[TLE] <BR>ERR[ORS] [{FUNCTION|PROCEDURE|PACKAGE|PACKAGE BODY| <BR>TRIGGER|VIEW|TYPE|TYPE BODY} [schema.]name] <BR>LNO <BR>PARAMETERS [parameter_name] <BR>PNO <BR>REL[EASE] <BR>REPF[OOTER] <BR>REPH[EADER] <BR>SGA <BR>SPOO[L] <BR>SQLCODE <BR>TTI[TLE] <BR>USER <BR>&nbsp; <BR>1) . 显示当前环境变量的值： <BR>Show all <BR>&nbsp; <BR>2) . 显示当前在创建函数、存储过程、触发器、包等对象的错误信息 <BR>Show error <BR>当创建一个函数、存储过程等出错时，变可以用该命令查看在那个地方出错及相应的出错信息，进行修改后再次进行编译。 <BR>&nbsp; <BR>3) . 显示初始化参数的值： <BR>show PARAMETERS [parameter_name] <BR>&nbsp; <BR>4) . 显示数据库的版本： <BR>show REL[EASE] <BR>&nbsp; <BR>5) . 显示SGA的大小 <BR>show SGA <BR>&nbsp; <BR>6). 显示当前的用户名 <BR>show user </P>
<P><BR></P></SPAN><img src ="http://www.blogjava.net/konhon/aggbug/19077.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-11-10 08:14 <a href="http://www.blogjava.net/konhon/archive/2005/11/10/19077.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于ERP理论对软件中物料“单位”应用分析</title><link>http://www.blogjava.net/konhon/archive/2005/10/24/16544.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Mon, 24 Oct 2005 03:10:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/10/24/16544.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/16544.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/10/24/16544.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/16544.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/16544.html</trackback:ping><description><![CDATA[目前不管是国内的ERP软件，还是国外的ERP软件，发展得都比较成熟。它们对于企业业务流程的大致流程都能满足，要想使自身的ERP软件在市场上具有独特的市场份额，就看软件是否能解决客户的个性化的需求。但对于ERP软件部分重要的基础功能设计将会影响到客户操作能否方便、灵活、易懂。本文章将对ERP软件中物料（或料品）单位，从系统适用性和集成等方面做一全面的叙述。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;<STRONG>一、在ERP软件中单位的种类<BR></STRONG><BR>&nbsp;&nbsp;&nbsp;&nbsp;在ERP软件中，单位涉及的比较多，如：库存单位、销售单位、采购单位、重量单位、基本单位、辅助量单位等。目前许多软件中都有销售单位、库存单位以及采购单位，这也是软件本身最基本的需求，对于后面的几种单位强调的不是太多，但它却能满足客户的一些特殊的需求。<BR><BR>&nbsp;&nbsp;&nbsp;<STRONG>&nbsp;二、在ERP软件中单位之间的关系<BR><BR></STRONG>&nbsp;&nbsp;&nbsp;&nbsp;在企业的实际运用中，一个物料在不同的阶段它的单位往往是不同的，如：螺母在生产使用过程中的单位是“个”，在采购时是“盒”，在库存中的单位是“KG”，他们之间的关系在软件中又是如何体现的呢？目前在国内许多软件中，物料的单位信息在不同的窗口中进行维护，他们之间的关系也是在相应的模块中得到体现。可能出现以下几种不理想的情况：<BR>&nbsp;&nbsp;&nbsp;&nbsp;单位的字段通过手工输入的方法实现，这样对于一个同样的单位如“KG”，在实际维护中不同的部门可能会产生多种情况，如“kg”、“千克”等；<BR>&nbsp;&nbsp;&nbsp;&nbsp;在物料清单（BOM）设计中，以“库存单位”作为参照，可如果客户的规模比较大情况下中，设计科（负责BOM的设计）往往无法知道“库存单位”，这样在操作方面，无疑有许多困难；<BR>&nbsp;&nbsp;&nbsp;&nbsp;如果在物料基本信息中将“库存单位”、“销售单位”、“采购单位”之间的换算关系维护成固定的比例关系，这也会引起许多问题。如，采购单位从“盒”变成了“箱”，则要将系统中所有物料的换算关系都要进行改变，如果不通过后台数据库的批量修改（在实际操作中，不推荐客户从后台修改，可能造成误操作。），则无疑增大了工作量，而且可能出项遗漏的现象；<BR>&nbsp;&nbsp;&nbsp;&nbsp;至于辅助量单位，在许多软件中都虚拟的存在，可在实际运用中存在许多问题。如，以“米”作为主单位，以“KG”作为辅助量单位，在粗略统计时，往往仅考虑一下以辅助量做单位的数量即可。如，线类产品，不同长度的线，往往可以用不同的“物料号”加以表达，可在粗略考虑它的库存数量时，仅用辅助量来考虑就行了。可如何实现一个物料用多种辅助量来控制呢？在许多软件中，在物料基本信息中，有“是否辅助量”控制的字段，如果需要，将必须输入“辅助量单位”，在以后的模块中，无法对此进行修改。<BR><BR>&nbsp;&nbsp;&nbsp;<STRONG>&nbsp;三、解决单位引起的问题策略分析<BR></STRONG><BR>&nbsp;&nbsp;&nbsp;&nbsp;根据我参与设计ERP软件，以及客户的使用效果和经验，针对于上述的问题可以通过以下方法解决：<BR>&nbsp;&nbsp;&nbsp;&nbsp;给物料设计一个各部门共识的单位——“基本单位”，所有的单位都以此为参照；并通过“单位代码”和“单位名称”来实现单位长度的限制，在国内许多软件中，往往无法实现复合单位的维护，如，KG/米；<BR>&nbsp;&nbsp;&nbsp;&nbsp;设计“单位字典”，将所有的单位统一管理，并统一口径输入；在其他相应使用地方，通过“下拉框”形式实现单位的维护；<BR>&nbsp;&nbsp;&nbsp;&nbsp;设计“单位组”字典，实现单位之间的换算关系，在维护物料基本信息时，选择“单位组”和“单位”；在单位组中设计一个默认的基本单位，其他单位同它设置固定的换算关系，这样可以方便维护，在其他单位的维护中，仅显示此物料“单位组”下的各种单位。<BR>&nbsp;&nbsp;&nbsp;&nbsp;通过专门的窗口维护单位之间的换算关系，解决了如果换单位而引起的换算关系全部需要更新的情况，仅在单位组字段中，对换算比例更新即可。<BR>&nbsp;&nbsp;&nbsp;&nbsp;总之，物料单位是ERP软件的一个基本的重要信息，如果设计不要，将会给操作灵活性和系统集成方面带来许多问题。我对此提出一些看法，希望大家提出宝贵意见。<BR><!-- #EndEditable --><img src ="http://www.blogjava.net/konhon/aggbug/16544.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-10-24 11:10 <a href="http://www.blogjava.net/konhon/archive/2005/10/24/16544.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE数据库开发经验</title><link>http://www.blogjava.net/konhon/archive/2005/10/17/15740.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Mon, 17 Oct 2005 10:58:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/10/17/15740.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/15740.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/10/17/15740.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/15740.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/15740.html</trackback:ping><description><![CDATA[<FONT face=Verdana>---- ORACLE数据库作为大型数据库管理系统，近年来一直占有世界上高端数据库的最大份额，其强大而完善的数据库管理功能，以及ORACLE公司推陈出新的不断努力，一直成为IT业界瞩目的焦点。岭澳核电站的数据库平台采用了ORACLE7.3作为后端平台，前端选择了ORACLE公司的DEVELOPER 2000 及DESIGNER 2000作为开发工具，采用了目前流行的CLIENT/SERVER模式。本人在ORACLE系统的开发中，就ORACLE的整套开发工具提出一些自己的体会，供同行参考。 <BR><BR>---- 一. ORACLE SQL PLUS 使用技巧: <BR><BR>---- ①查找重复记录: <BR><BR>SELECT DRAWING,DSNO FROM EM5_PIPE_PREFAB<BR>WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5<BR>_PIPE_PREFAB D<BR>WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND <BR>EM5_PIPE_PREFAB.DSNO=D.DSNO);<BR>---- 执行上述SQL语句后就可以显示所有DRAWING和DSNO相同且重复的记录。 <BR>---- 删除重复记录: <BR><BR>DELETE FROM EM5_PIPE_PREFAB <BR>WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5<BR>_PIPE_PREFAB D<BR>WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND <BR>EM5_PIPE_PREFAB.DSNO=D.DSNO);<BR>---- 执行上述SQL语句后就可以刪除所有DRAWING和DSNO相同且重复的记录。 <BR>---- ② 快速编译所有视图 <BR><BR>---- 当在把数据库倒入到新的服务器上后(数据库重建)，需要将视图重新编译一遍，因为该表空间视图到其它表空间的表的连接会出现问题，可以利用PL/SQL的语言特性，快速编译。 <BR><BR>SQL &gt;SPOOL ON.SQL<BR>SQL &gt;SELECT ‘ALTER VIEW ‘||TNAME||’<BR>COMPILE;’ FROM TAB;<BR>SQL &gt;SPOOL OFF<BR>然后执行ON.SQL即可。<BR>SQL &gt;@ON.SQL<BR>当然，授权和创建同义词也可以快速进行，如：<BR>SQL &gt;SELECT ‘GRANT SELECT ON ’<BR>||TNAME||’ TO USERNAME;’ FROM TAB;<BR>SQL &gt;SELECT ‘CREATE SYNONYM <BR>‘||TNAME||’ FOR USERNAME.’||TNAME||’;’ FROM TAB;<BR><BR>③ 用外联接提高表连接的查询速度<BR>在作表连接(常用于视图)时，常使用以下方法来查询数据:<BR>SELECT PAY_NO, PROJECT_NAME<BR>FROM A<BR>WHERE A.PAY_NO NOT IN (SELECT PAY_<BR>NO FROM B WHERE VALUE &gt;=120000);<BR>---- 但是若表A有10000条记录，表B有10000条记录，则要用掉30分钟才能查完，主要因为NOT IN要进行一条一条的比较，共需要10000*10000次比较后，才能得到结果。该用外联接后，可以缩短到1分左右的时间: <BR>SELECT PAY_NO,PROJECT_NAME <BR>FROM A,B<BR>WHERE A.PAY_NO=B.PAY_NO(+)<BR>AND B.PAY_NO IS NULL <BR>AND B.VALUE &gt;=12000;<BR>---- ④ 怎样读写文本型操作系统文件 <BR>---- 在PL/SQL 3.3以上的版本中，UTL_FILE包允许用户通过PL/SQL读写操作系统文件。如下： <BR><BR>DECALRE<BR>FILE_HANDLE UTL_FILE.FILE_TYPE;<BR>BEGIN<BR>FILE_HANDLE:=UTL_FILE.FOPEN(<BR>‘C:\’,’TEST.TXT’,’A’);<BR>UTL_FILE.PUT_LINE(FILE_HANDLE,’<BR>HELLO,IT’S A TEST TXT FILE’);<BR>UTL_FILE.FCLOSE(FILE_HANDLE);<BR>END;<BR>---- 相关UTL_FILE数据库包详细信息可以参见相关资料。</FONT><FONT size=2><FONT face=Verdana>
<P><FONT face="verdana, arial, helvetica" size=2><SPAN class=javascript id=text21205 style="FONT-SIZE: 12px">---- ⑤ 怎样在数据库触发器中使用列的新值与旧值 <BR><BR>---- 在数据库触发器中几乎总是要使用触发器基表的列值，如果某条语句需要某列修改前的值，使用:OLD就可以了，使用某列修改后的新值，用:NEW就可以了。如:OLD.DEPT_NO,:NEW.DEPT_NO。 <BR><BR>---- 二.ORACLE DEVELOPER 2000使用技巧： <BR><BR>---- ① 改变FORM(FMX模块)运行时的Runform4.5的题头: <BR><BR>---- DEVELOPER2000中FMX默认题头为：Developer/2000 Forms Runtime for Windows 95 / NT 你可以改为自己定义的标题, <BR><BR>---- 1. 在Form级触发器中添加触发WHEN-NEW-FORM-INSTANCE <BR><BR>---- 2. 在此触发器中写如下代码： <BR><BR>set_window_property(FORMS_MDI_WINDOW,TITLE,'POINT<BR>SYSTEM 欢迎使用');<BR>---- ② 如何隐藏菜单中的window选项: <BR>---- 在创建自己的菜单时，最后选项总有window项，下面介绍如何去掉它, <BR><BR>---- 1. 创建一个Menu <BR><BR>---- 2. 在Menu中建立一个Item,命名为WINDOW。 <BR><BR>---- 3. 设置该Item属性如下: <BR><BR>----<BR><BR>Menu Item Type:Magic <BR>Command Type:Null <BR>Magic Item:Window <BR>Lable:为空<BR><BR>---- ③ 怎样创建动态下拉列表List <BR>---- Developer 2000 中的列表是通过设置相关属性而完成数据项的列表设置的，但那只是静态的，有时你想让某项成为动态的列表，随输入数据的改变而改变，就需要动手去编个小程序。下面详细介绍怎样去做: <BR><BR>---- 有块EBOP_CABLE_ACCOUNT，下有SPECIFICATION数据项，当一进入该模块时，就将SPECIFICATION项在数据库中存储的值动态显示出来，先在Form4.5中建立一个PRCEDURE，命名为DYN_LIST: <BR><BR>PROCEDURE DYN_LIST IS<BR>CURSOR C1 IS <BR>SELECT DISTINCT(SPECIFICATION) <BR>FROM EBOP_CABLE_ACCOUNT;<BR>CNT NUMBER;<BR>i NUMBER; <BR>TNAME EBOP_CABLE_<BR>ACCOUNT.SPECIFICATION%TYPE;<BR>BEGIN<BR>CLEAR_LIST('EBOP_CABLE_<BR>ACCOUNT.SPECIFICATION');<BR>SELECT COUNT(DISTINCT<BR>(SPECIFICATION)) INTO CNT FROM EBOP<BR>_CABLE_ACCOUNT;<BR>open C1;<BR>FOR i IN 1..CNT LOOP<BR>FETCH C1 INTO TNAME;<BR>EXIT WHEN C1%NOTFOUND <BR>OR C1%NOTFOUND IS NULL;<BR>ADD_LIST_ELEMENT<BR>('EBOP_CABLE_ACCOUNT<BR>.SPECIFICATION',i,TNAME,TNAME);<BR>END LOOP;<BR>DELETE_LIST_ELEMENT<BR>('EBOP_CABLE_ACCOUNT.SPECIFICATION',CNT+1);<BR>CLOSE C1;<BR>END;<BR>然后在FORM的WHEN-NEW<BR>-FORM-INSTANCE触发子中加入一行：<BR>DYN_LIST;<BR>---- 这样一进入该FMX，就会动态刷新该列表。除此之外，SPECIFICATION数据项改为列表项。 <BR>---- ④ 当显示多条记录且数据项特别多时，如何组织录入及显示界面: <BR><BR>---- 如上图所示，PRN代码及设备代码在画布1(CONTENT型)上，其它数据项在画布2(STACK型)上，所有数据项为一个表的列或一个块的数据项。在拉动水平滚动条时或用TAB或敲回车键时，将看到全部数据项。这种排布方法适用于数据项特别多又想显示多条记录时用。主要制作顺序为：先建立两个画布，画布1(CONTENT型)，画布2(STACK型)，然后建立块，选画布时用画布1，这样所有项都显示在画布1上，然后选中除PRN代码及设备代码之外的所有数据项，选TOOLS菜单下的PROPERTIES选项，将这些数据项的CANVAS属性选为画布2(STACK型)，然后调整整体位置就可以了。 <BR><BR>---- ⑤ 如何在FORM的受限触发子中提交保存数据 <BR><BR>---- 在FORM中很多触发子是不能用COMMIT WORK语句的，当你在该触发子中使用了UPDATE，DELETE等操作并想立即存盘时，就需要COMMIT WORK语句了。首先在服务器端建立DB_SQL_COMMIT这个过程(采用ORACLE7.3数据库)， <BR><BR>PROCEDURE DB_SQL_COMMIT IS<BR>source_cursor integer;<BR>ignore integer;<BR>V7 NUMBER :=2;<BR>BEGIN<BR>source_cursor:=dbms_sql.open_cursor;<BR>dbms_sql.parse(source_cursor,'COMMIT WORK',V7);<BR>ignore:=dbms_sql.execute(source_cursor);<BR>DBMS_SQL.CLOSE_CURSOR(source_cursor);<BR>END;<BR>---- 然后在FORM中该触发子中调用过程DB_SQL_COMMIT;就可以了，当然你可以根据自己需要将该过程加入参数，这样通过参数可以得到执行DML语句的权限。<BR><BR></P>
<P><FONT face="verdana, arial, helvetica" size=2><SPAN class=javascript id=text21206 style="FONT-SIZE: 12px">- ⑥ 如何在FORM中实现某数据项自动按记录序号加一操作 <BR><BR>---- 设块名为VO,要操作的数据项为VO_ID,在该块中建立块级触发子WHEN-CREATE- RECORD，加入如下代码： <BR><BR>:VO_ID:=:System.Trigger_Record;<BR>---- 这样每当生成新记录时VO_ID就会自动加一了。 <BR>---- ⑦ 如何在一个FORM中调用另一个FORM，或在一个块中调用另一个块时显示特定的记录有时用户会要求在调用另一个FORM时，只显示相关的记录，举例如下，在一个FORM的块中有一个按钮，在按钮触发子中加入如下代码： <BR><BR>DECLARE<BR>PM <BR>PARAMLIST;<BR>BEGIN<BR>PM:=GET_PARAMETER_LIST('PM');<BR>IF NOT ID_NULL(PM) THEN<BR>DESTROY_PARAMETER_LIST('PM');<BR>END IF;<BR>PM:=CREATE_PARAMETER_LIST('PM');<BR>......................<BR>ADD_PARAMETER(PM,'THE_WHERE',<BR>TEXT_PARAMETER,'EM_NAME=''EM4'' <BR>AND EM_PROJECT_NAME=''支架预制''');<BR>OPEN_FORM('PAYMENT',ACTIVATE,SESSION,PM);<BR>END；<BR>---- 其中EM_NAME，EM_PROJECT_NAME为本FORM某块的数据项，PAYMENT为要调用的FORM模块。这样通过传递参数列表就可以得到想要的结果。在FORM PAYMENT.FMB中，建立一参数THE_WHERE，CHAR型，长1000，然后在PAYMENT.FMB中建立FORM级触发子WHEN-NEW-FORM-INSTANCE，在该触发子中加入以下语句： <BR>IF :PARAMETER.THE_WHERE IS NOT NULL THEN<BR>SET_BLOCK_PROPERTY('PAYMENT',<BR>DEFAULT_WHERE,:PARAMETER.THE_WHERE);<BR>END IF;<BR>---- 其中PAYMENT为要显示的块，这样通过参数传递就得到想要的某些特定条件的数据了。 <BR>---- ⑧ 在FORM中当有主从块时，连续输入记录如何避免被不断的提示保存： <BR><BR>---- 每输入一条主记录和若干条该主记录的从记录后，此时再导航到主块输下一条记录，FORM就会提示你是否要保存记录，而你并不希望FORM提示，让它自动保存，此时你可以到Program Units中找到过程PROCEDURE Clear_All_Master_Details，然后在这个过程中找到语句 <BR><BR>Clear_Block(ASK_COMMIT); <BR>---- 将其改为Clear_Block(DO_COMMIT);就可以了。 <BR>---- ⑨ 在Report开始时选择排序项: <BR><BR>---- 在报表开始的Parameter Form中选择报表按哪个数据项排序， <BR><BR>---- 1. 先在USER PARAMETER 中创建SORT参数，为字符型，长20。 <BR><BR>---- 2. 初始值选’责任方’,然后将这四个值输入到DATA SELECTION中，形成列表。 <BR><BR>---- 3. 然后处理QUERY中的SQL语句: <BR><BR>select CHARGER,FCO_NO,EM_NAME,FCO<BR>_NO,DESCRIPTION, FCR_POINT <BR>from FCR_MAIN <BR>ORDER BY DECODE(:SORT,'责任方',CHARGER,'FCO号',<BR>FCO_NO,'FCR号',FCR_NO,'FCR号',EM_NAME)<BR><BR><SPAN class=javascript id=text21207 style="FONT-SIZE: 12px">---- ⑩ 在Developer 2000中如何读写操作系统文件 <BR>---- 在用Developer 2000的开发工具开发应用程序时，经常碰到需要读写外部文件的问题，可以用ORACLE 带的包TEXT_IO来完成这项需求。例如: <BR><BR>DECLARE<BR>IN_FILE TEXT_IO.FILE_TYPE;<BR>OUT_FILE TEXT_IO.FILE_TYPE;<BR>LINE_BUFER VARCHAR2(80); <BR>/*若不用IN_FILE,可以将各字段联接在一起赋值给此变量*/<BR>BEGIN<BR>IN_FILE:=TEXT_IO.FOPEN<BR>(‘C:\TEMP\TEST1.TXT’,’r’);<BR>OUT_FILE:=TEXT_IO.FOPEN<BR>(‘C:\TEMP\TEST2.TXT’,’w+’);<BR>LOOP<BR>TEXT_IO.GET_LINE(IN_FILE,LINE_BUFER);<BR>TEXT_IO.PUT(LINE_BUFER);<BR>TEXT_IO.NEW_LINE;<BR>TEXT_IO.PUT_LINE(OUT_FILE,LINE_BUFER);<BR>END LOOP;<BR>EXCEPTION<BR>WHEN no_data_found THEN<BR>TEXT_IO.PUT_LINE(‘CLOSING THE FILE ,PLEASE WAITING....’);<BR>TEXT_IO.FCLOSE(IN_FILE);<BR>TEXT_IO.FCLOSE(OUT_FILE);<BR>END;<BR>---- 三.数据库管理 <BR><BR>---- ① 在删除一个表中的全部数据时，须使用TRUNCATE TABLE 表名;因为用DROP TABLE，DELETE * FROM 表名时，TABLESPACE表空间该表的占用空间并未释放，反复几次DROP，DELETE操作后，该TABLESPACE上百兆的空间就被耗光了。 <BR><BR>---- ② 数据库文件的移动方法 <BR><BR>---- 当想将数据库文件移动到另外一个目录下时，可以用ALTER DATABASE命令来移动(比ALTER TABLESPACE适用性强)： <BR><BR>---- 1. 使用SERVER MANAGER关闭实例. <BR><BR>SVRMGR &gt; connect internal;<BR>SVRMGR &gt; shutdown;<BR>SVRMGR &gt;exit;<BR>---- 2. 使用操作系统命令来移动数据库文件位置(假设这里操作系统为SOLARIS 2.6). 在UNIX中用 mv命令可以把文件移动到新的位置， <BR><BR>#mv /ora13/orarun/document.dbf /ora12/orarun<BR>---- 3. 装载数据库并用alter database命令来改变数据库中的文件名. <BR>SVRMGR &gt; connect internal;<BR>SVRMGR &gt; startup mount RUN73;<BR>SVRMGR &gt; alter database rename file<BR>&gt; ‘/ ora13/orarun/document.dbf’<BR>&gt; ‘/ ora12/orarun/document.dbf’;<BR>---- 4. 启动实例. <BR><BR>SVRMGR &gt; alter database open;<BR></SPAN></SPAN></FONT></P></SPAN></FONT></FONT></FONT><img src ="http://www.blogjava.net/konhon/aggbug/15740.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-10-17 18:58 <a href="http://www.blogjava.net/konhon/archive/2005/10/17/15740.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE数据库开发经验</title><link>http://www.blogjava.net/konhon/archive/2005/10/17/15741.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Mon, 17 Oct 2005 10:58:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/10/17/15741.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/15741.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/10/17/15741.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/15741.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/15741.html</trackback:ping><description><![CDATA[<FONT face=Verdana>---- ORACLE数据库作为大型数据库管理系统，近年来一直占有世界上高端数据库的最大份额，其强大而完善的数据库管理功能，以及ORACLE公司推陈出新的不断努力，一直成为IT业界瞩目的焦点。岭澳核电站的数据库平台采用了ORACLE7.3作为后端平台，前端选择了ORACLE公司的DEVELOPER 2000 及DESIGNER 2000作为开发工具，采用了目前流行的CLIENT/SERVER模式。本人在ORACLE系统的开发中，就ORACLE的整套开发工具提出一些自己的体会，供同行参考。 <BR><BR>---- 一. ORACLE SQL PLUS 使用技巧: <BR><BR>---- ①查找重复记录: <BR><BR>SELECT DRAWING,DSNO FROM EM5_PIPE_PREFAB<BR>WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5<BR>_PIPE_PREFAB D<BR>WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND <BR>EM5_PIPE_PREFAB.DSNO=D.DSNO);<BR>---- 执行上述SQL语句后就可以显示所有DRAWING和DSNO相同且重复的记录。 <BR>---- 删除重复记录: <BR><BR>DELETE FROM EM5_PIPE_PREFAB <BR>WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5<BR>_PIPE_PREFAB D<BR>WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND <BR>EM5_PIPE_PREFAB.DSNO=D.DSNO);<BR>---- 执行上述SQL语句后就可以刪除所有DRAWING和DSNO相同且重复的记录。 <BR>---- ② 快速编译所有视图 <BR><BR>---- 当在把数据库倒入到新的服务器上后(数据库重建)，需要将视图重新编译一遍，因为该表空间视图到其它表空间的表的连接会出现问题，可以利用PL/SQL的语言特性，快速编译。 <BR><BR>SQL &gt;SPOOL ON.SQL<BR>SQL &gt;SELECT ‘ALTER VIEW ‘||TNAME||’<BR>COMPILE;’ FROM TAB;<BR>SQL &gt;SPOOL OFF<BR>然后执行ON.SQL即可。<BR>SQL &gt;@ON.SQL<BR>当然，授权和创建同义词也可以快速进行，如：<BR>SQL &gt;SELECT ‘GRANT SELECT ON ’<BR>||TNAME||’ TO USERNAME;’ FROM TAB;<BR>SQL &gt;SELECT ‘CREATE SYNONYM <BR>‘||TNAME||’ FOR USERNAME.’||TNAME||’;’ FROM TAB;<BR><BR>③ 用外联接提高表连接的查询速度<BR>在作表连接(常用于视图)时，常使用以下方法来查询数据:<BR>SELECT PAY_NO, PROJECT_NAME<BR>FROM A<BR>WHERE A.PAY_NO NOT IN (SELECT PAY_<BR>NO FROM B WHERE VALUE &gt;=120000);<BR>---- 但是若表A有10000条记录，表B有10000条记录，则要用掉30分钟才能查完，主要因为NOT IN要进行一条一条的比较，共需要10000*10000次比较后，才能得到结果。该用外联接后，可以缩短到1分左右的时间: <BR>SELECT PAY_NO,PROJECT_NAME <BR>FROM A,B<BR>WHERE A.PAY_NO=B.PAY_NO(+)<BR>AND B.PAY_NO IS NULL <BR>AND B.VALUE &gt;=12000;<BR>---- ④ 怎样读写文本型操作系统文件 <BR>---- 在PL/SQL 3.3以上的版本中，UTL_FILE包允许用户通过PL/SQL读写操作系统文件。如下： <BR><BR>DECALRE<BR>FILE_HANDLE UTL_FILE.FILE_TYPE;<BR>BEGIN<BR>FILE_HANDLE:=UTL_FILE.FOPEN(<BR>‘C:\’,’TEST.TXT’,’A’);<BR>UTL_FILE.PUT_LINE(FILE_HANDLE,’<BR>HELLO,IT’S A TEST TXT FILE’);<BR>UTL_FILE.FCLOSE(FILE_HANDLE);<BR>END;<BR>---- 相关UTL_FILE数据库包详细信息可以参见相关资料。</FONT><FONT size=2><FONT face=Verdana>
<P><FONT face="verdana, arial, helvetica" size=2><SPAN class=javascript id=text21205 style="FONT-SIZE: 12px">---- ⑤ 怎样在数据库触发器中使用列的新值与旧值 <BR><BR>---- 在数据库触发器中几乎总是要使用触发器基表的列值，如果某条语句需要某列修改前的值，使用:OLD就可以了，使用某列修改后的新值，用:NEW就可以了。如:OLD.DEPT_NO,:NEW.DEPT_NO。 <BR><BR>---- 二.ORACLE DEVELOPER 2000使用技巧： <BR><BR>---- ① 改变FORM(FMX模块)运行时的Runform4.5的题头: <BR><BR>---- DEVELOPER2000中FMX默认题头为：Developer/2000 Forms Runtime for Windows 95 / NT 你可以改为自己定义的标题, <BR><BR>---- 1. 在Form级触发器中添加触发WHEN-NEW-FORM-INSTANCE <BR><BR>---- 2. 在此触发器中写如下代码： <BR><BR>set_window_property(FORMS_MDI_WINDOW,TITLE,'POINT<BR>SYSTEM 欢迎使用');<BR>---- ② 如何隐藏菜单中的window选项: <BR>---- 在创建自己的菜单时，最后选项总有window项，下面介绍如何去掉它, <BR><BR>---- 1. 创建一个Menu <BR><BR>---- 2. 在Menu中建立一个Item,命名为WINDOW。 <BR><BR>---- 3. 设置该Item属性如下: <BR><BR>----<BR><BR>Menu Item Type:Magic <BR>Command Type:Null <BR>Magic Item:Window <BR>Lable:为空<BR><BR>---- ③ 怎样创建动态下拉列表List <BR>---- Developer 2000 中的列表是通过设置相关属性而完成数据项的列表设置的，但那只是静态的，有时你想让某项成为动态的列表，随输入数据的改变而改变，就需要动手去编个小程序。下面详细介绍怎样去做: <BR><BR>---- 有块EBOP_CABLE_ACCOUNT，下有SPECIFICATION数据项，当一进入该模块时，就将SPECIFICATION项在数据库中存储的值动态显示出来，先在Form4.5中建立一个PRCEDURE，命名为DYN_LIST: <BR><BR>PROCEDURE DYN_LIST IS<BR>CURSOR C1 IS <BR>SELECT DISTINCT(SPECIFICATION) <BR>FROM EBOP_CABLE_ACCOUNT;<BR>CNT NUMBER;<BR>i NUMBER; <BR>TNAME EBOP_CABLE_<BR>ACCOUNT.SPECIFICATION%TYPE;<BR>BEGIN<BR>CLEAR_LIST('EBOP_CABLE_<BR>ACCOUNT.SPECIFICATION');<BR>SELECT COUNT(DISTINCT<BR>(SPECIFICATION)) INTO CNT FROM EBOP<BR>_CABLE_ACCOUNT;<BR>open C1;<BR>FOR i IN 1..CNT LOOP<BR>FETCH C1 INTO TNAME;<BR>EXIT WHEN C1%NOTFOUND <BR>OR C1%NOTFOUND IS NULL;<BR>ADD_LIST_ELEMENT<BR>('EBOP_CABLE_ACCOUNT<BR>.SPECIFICATION',i,TNAME,TNAME);<BR>END LOOP;<BR>DELETE_LIST_ELEMENT<BR>('EBOP_CABLE_ACCOUNT.SPECIFICATION',CNT+1);<BR>CLOSE C1;<BR>END;<BR>然后在FORM的WHEN-NEW<BR>-FORM-INSTANCE触发子中加入一行：<BR>DYN_LIST;<BR>---- 这样一进入该FMX，就会动态刷新该列表。除此之外，SPECIFICATION数据项改为列表项。 <BR>---- ④ 当显示多条记录且数据项特别多时，如何组织录入及显示界面: <BR><BR>---- 如上图所示，PRN代码及设备代码在画布1(CONTENT型)上，其它数据项在画布2(STACK型)上，所有数据项为一个表的列或一个块的数据项。在拉动水平滚动条时或用TAB或敲回车键时，将看到全部数据项。这种排布方法适用于数据项特别多又想显示多条记录时用。主要制作顺序为：先建立两个画布，画布1(CONTENT型)，画布2(STACK型)，然后建立块，选画布时用画布1，这样所有项都显示在画布1上，然后选中除PRN代码及设备代码之外的所有数据项，选TOOLS菜单下的PROPERTIES选项，将这些数据项的CANVAS属性选为画布2(STACK型)，然后调整整体位置就可以了。 <BR><BR>---- ⑤ 如何在FORM的受限触发子中提交保存数据 <BR><BR>---- 在FORM中很多触发子是不能用COMMIT WORK语句的，当你在该触发子中使用了UPDATE，DELETE等操作并想立即存盘时，就需要COMMIT WORK语句了。首先在服务器端建立DB_SQL_COMMIT这个过程(采用ORACLE7.3数据库)， <BR><BR>PROCEDURE DB_SQL_COMMIT IS<BR>source_cursor integer;<BR>ignore integer;<BR>V7 NUMBER :=2;<BR>BEGIN<BR>source_cursor:=dbms_sql.open_cursor;<BR>dbms_sql.parse(source_cursor,'COMMIT WORK',V7);<BR>ignore:=dbms_sql.execute(source_cursor);<BR>DBMS_SQL.CLOSE_CURSOR(source_cursor);<BR>END;<BR>---- 然后在FORM中该触发子中调用过程DB_SQL_COMMIT;就可以了，当然你可以根据自己需要将该过程加入参数，这样通过参数可以得到执行DML语句的权限。<BR><BR></P>
<P><FONT face="verdana, arial, helvetica" size=2><SPAN class=javascript id=text21206 style="FONT-SIZE: 12px">- ⑥ 如何在FORM中实现某数据项自动按记录序号加一操作 <BR><BR>---- 设块名为VO,要操作的数据项为VO_ID,在该块中建立块级触发子WHEN-CREATE- RECORD，加入如下代码： <BR><BR>:VO_ID:=:System.Trigger_Record;<BR>---- 这样每当生成新记录时VO_ID就会自动加一了。 <BR>---- ⑦ 如何在一个FORM中调用另一个FORM，或在一个块中调用另一个块时显示特定的记录有时用户会要求在调用另一个FORM时，只显示相关的记录，举例如下，在一个FORM的块中有一个按钮，在按钮触发子中加入如下代码： <BR><BR>DECLARE<BR>PM <BR>PARAMLIST;<BR>BEGIN<BR>PM:=GET_PARAMETER_LIST('PM');<BR>IF NOT ID_NULL(PM) THEN<BR>DESTROY_PARAMETER_LIST('PM');<BR>END IF;<BR>PM:=CREATE_PARAMETER_LIST('PM');<BR>......................<BR>ADD_PARAMETER(PM,'THE_WHERE',<BR>TEXT_PARAMETER,'EM_NAME=''EM4'' <BR>AND EM_PROJECT_NAME=''支架预制''');<BR>OPEN_FORM('PAYMENT',ACTIVATE,SESSION,PM);<BR>END；<BR>---- 其中EM_NAME，EM_PROJECT_NAME为本FORM某块的数据项，PAYMENT为要调用的FORM模块。这样通过传递参数列表就可以得到想要的结果。在FORM PAYMENT.FMB中，建立一参数THE_WHERE，CHAR型，长1000，然后在PAYMENT.FMB中建立FORM级触发子WHEN-NEW-FORM-INSTANCE，在该触发子中加入以下语句： <BR>IF :PARAMETER.THE_WHERE IS NOT NULL THEN<BR>SET_BLOCK_PROPERTY('PAYMENT',<BR>DEFAULT_WHERE,:PARAMETER.THE_WHERE);<BR>END IF;<BR>---- 其中PAYMENT为要显示的块，这样通过参数传递就得到想要的某些特定条件的数据了。 <BR>---- ⑧ 在FORM中当有主从块时，连续输入记录如何避免被不断的提示保存： <BR><BR>---- 每输入一条主记录和若干条该主记录的从记录后，此时再导航到主块输下一条记录，FORM就会提示你是否要保存记录，而你并不希望FORM提示，让它自动保存，此时你可以到Program Units中找到过程PROCEDURE Clear_All_Master_Details，然后在这个过程中找到语句 <BR><BR>Clear_Block(ASK_COMMIT); <BR>---- 将其改为Clear_Block(DO_COMMIT);就可以了。 <BR>---- ⑨ 在Report开始时选择排序项: <BR><BR>---- 在报表开始的Parameter Form中选择报表按哪个数据项排序， <BR><BR>---- 1. 先在USER PARAMETER 中创建SORT参数，为字符型，长20。 <BR><BR>---- 2. 初始值选’责任方’,然后将这四个值输入到DATA SELECTION中，形成列表。 <BR><BR>---- 3. 然后处理QUERY中的SQL语句: <BR><BR>select CHARGER,FCO_NO,EM_NAME,FCO<BR>_NO,DESCRIPTION, FCR_POINT <BR>from FCR_MAIN <BR>ORDER BY DECODE(:SORT,'责任方',CHARGER,'FCO号',<BR>FCO_NO,'FCR号',FCR_NO,'FCR号',EM_NAME)<BR><BR><SPAN class=javascript id=text21207 style="FONT-SIZE: 12px">---- ⑩ 在Developer 2000中如何读写操作系统文件 <BR>---- 在用Developer 2000的开发工具开发应用程序时，经常碰到需要读写外部文件的问题，可以用ORACLE 带的包TEXT_IO来完成这项需求。例如: <BR><BR>DECLARE<BR>IN_FILE TEXT_IO.FILE_TYPE;<BR>OUT_FILE TEXT_IO.FILE_TYPE;<BR>LINE_BUFER VARCHAR2(80); <BR>/*若不用IN_FILE,可以将各字段联接在一起赋值给此变量*/<BR>BEGIN<BR>IN_FILE:=TEXT_IO.FOPEN<BR>(‘C:\TEMP\TEST1.TXT’,’r’);<BR>OUT_FILE:=TEXT_IO.FOPEN<BR>(‘C:\TEMP\TEST2.TXT’,’w+’);<BR>LOOP<BR>TEXT_IO.GET_LINE(IN_FILE,LINE_BUFER);<BR>TEXT_IO.PUT(LINE_BUFER);<BR>TEXT_IO.NEW_LINE;<BR>TEXT_IO.PUT_LINE(OUT_FILE,LINE_BUFER);<BR>END LOOP;<BR>EXCEPTION<BR>WHEN no_data_found THEN<BR>TEXT_IO.PUT_LINE(‘CLOSING THE FILE ,PLEASE WAITING....’);<BR>TEXT_IO.FCLOSE(IN_FILE);<BR>TEXT_IO.FCLOSE(OUT_FILE);<BR>END;<BR>---- 三.数据库管理 <BR><BR>---- ① 在删除一个表中的全部数据时，须使用TRUNCATE TABLE 表名;因为用DROP TABLE，DELETE * FROM 表名时，TABLESPACE表空间该表的占用空间并未释放，反复几次DROP，DELETE操作后，该TABLESPACE上百兆的空间就被耗光了。 <BR><BR>---- ② 数据库文件的移动方法 <BR><BR>---- 当想将数据库文件移动到另外一个目录下时，可以用ALTER DATABASE命令来移动(比ALTER TABLESPACE适用性强)： <BR><BR>---- 1. 使用SERVER MANAGER关闭实例. <BR><BR>SVRMGR &gt; connect internal;<BR>SVRMGR &gt; shutdown;<BR>SVRMGR &gt;exit;<BR>---- 2. 使用操作系统命令来移动数据库文件位置(假设这里操作系统为SOLARIS 2.6). 在UNIX中用 mv命令可以把文件移动到新的位置， <BR><BR>#mv /ora13/orarun/document.dbf /ora12/orarun<BR>---- 3. 装载数据库并用alter database命令来改变数据库中的文件名. <BR>SVRMGR &gt; connect internal;<BR>SVRMGR &gt; startup mount RUN73;<BR>SVRMGR &gt; alter database rename file<BR>&gt; ‘/ ora13/orarun/document.dbf’<BR>&gt; ‘/ ora12/orarun/document.dbf’;<BR>---- 4. 启动实例. <BR><BR>SVRMGR &gt; alter database open;<BR></SPAN></SPAN></FONT></P></SPAN></FONT></FONT></FONT><img src ="http://www.blogjava.net/konhon/aggbug/15741.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-10-17 18:58 <a href="http://www.blogjava.net/konhon/archive/2005/10/17/15741.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>也许你还不知道 - sqlplus的小秘密(4) </title><link>http://www.blogjava.net/konhon/archive/2005/10/17/15738.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Mon, 17 Oct 2005 10:53:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/10/17/15738.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/15738.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/10/17/15738.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/15738.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/15738.html</trackback:ping><description><![CDATA[<P>也许你还不知道 - sqlplus的小秘密(4)</P>
<P>这个也许不算什么秘密, 很多人大概都知道, 不过用过的人也许不多.</P>
<P>在8.1.7版本(也许是816? 不太确定)以后, sql*plus中有一个set markup html的命令, 可以将sql*plus的输出以html格式展现.</P><BR>
<DIV class=code><A href="mailto:scott@O9I.US.ORACLE.COM"><FONT color=#007799>scott@O9I.US.ORACLE.COM</FONT></A>&gt; set markup html on spool on<BR><A href="mailto:scott@O9I.US.ORACLE.COM"><FONT color=#007799>"&gt;scott@O9I.US.ORACLE.COM&amp;gt</FONT></A>; select empno, ename from emp where rownum&lt;3;<BR>&lt;br&gt;<BR>&lt;p&gt;<BR>&lt;table border='1' width='90%' align='center' summary='Script output'&gt;<BR>&lt;tr&gt;<BR>&lt;th scope="col"&gt;<BR>EMPNO<BR>&lt;/th&gt;<BR>&lt;th scope="col"&gt;<BR>ENAME<BR>&lt;/th&gt;<BR>&lt;/tr&gt;<BR>&lt;tr&gt;<BR>&lt;td align="right"&gt;<BR>7369<BR>&lt;/td&gt;<BR>&lt;td&gt;<BR>SMITH<BR>&lt;/td&gt;<BR>&lt;/tr&gt;<BR>&lt;tr&gt;<BR>&lt;td align="right"&gt;<BR>7499<BR>&lt;/td&gt;<BR>&lt;td&gt;<BR>ALLEN<BR>&lt;/td&gt;<BR>&lt;/tr&gt;<BR>&lt;/table&gt;<BR>&lt;p&gt;</DIV>
<DIV class=code><A href="mailto:scott@O9I.US.ORACLE.COM"><FONT color=#007799>"&gt;scott@O9I.US.ORACLE.COM&amp;gt</FONT></A>;</DIV>
<DIV class=code></DIV>
<P>注意其中的spool on, 当在屏幕上输出的时候, 我们看不出与不加spool on有什么区别, 但是当我们使用spool filename 输出到文件的时候, 会看到spool文件中出现了&lt;html&gt;&lt;body&gt;等tag.</P>
<DIV class=code>
<P><A href="mailto:scott@O9I.US.ORACLE.COM"><FONT color=#007799>"&gt;scott@O9I.US.ORACLE.COM&amp;gt</FONT></A>; spool c:emp.htm<BR>&lt;br&gt;<BR><A href="mailto:scott@O9I.US.ORACLE.COM"><FONT color=#007799>"&gt;scott@O9I.US.ORACLE.COM&amp;gt</FONT></A>; /<BR>&lt;br&gt;<BR>&lt;p&gt;<BR>&lt;table border='1' width='90%' align='center' summary='Script output'&gt;<BR>......此处省略</P>
<P><A href="mailto:scott@O9I.US.ORACLE.COM"><FONT color=#007799>"&gt;scott@O9I.US.ORACLE.COM&amp;gt</FONT></A>; spool off<BR>&lt;br&gt;</P>
<P></P></DIV>
<P>查看生成的emp.htm文件的内容:</P>
<DIV class=code>
<P>&lt;html&gt;<BR>&lt;head&gt;<BR>&lt;meta http-equiv="Content-Type" content="text/html; charset=WINDOWS-936"&gt;<BR>&lt;meta name="generator" content="SQL*Plus 9.2.0"&gt;<BR>&lt;style type='text/css'&gt; body {font:10pt Arial,Helvetica,sans-serif; color:black; background:White;} p {font:10pt Arial,Helvetica,sans-serif; color:black; background:White;} table,tr,td {font:10pt Arial,Helvetica,sans-serif; color:Black; background:#f7f7e7; padding:0px 0px 0px 0px; margin:0px 0px 0px 0px;} th {font:bold 10pt Arial,Helvetica,sans-serif; color:#336699; background:#cccc99; padding:0px 0px 0px 0px;} h1 {font:16pt Arial,Helvetica,Geneva,sans-serif; color:#336699; background-color:White; border-bottom:1px solid #cccc99; margin-top:0pt; margin-bottom:0pt; padding:0px 0px 0px 0px;} h2 {font:bold 10pt Arial,Helvetica,Geneva,sans-serif; color:#336699; background-color:White; margin-top:4pt; margin-bottom:0pt;} a {font:9pt Arial,Helvetica,sans-serif; color:#663300; background:#ffffff; margin-top:0pt; margin-bottom:0pt; vertical-align:top;}&lt;/style&gt;&lt;title&gt;SQL*Plus Report&lt;/title&gt;<BR>&lt;/head&gt;<BR>&lt;body&gt;<BR><A href="mailto:scott@O9I.US.ORACLE.COM"><FONT color=#007799>"&gt;scott@O9I.US.ORACLE.COM&amp;gt</FONT></A>; /<BR>&lt;br&gt;<BR>&lt;p&gt;<BR>&lt;table border='1' width='90%' align='center' summary='Script output'&gt;<BR>&lt;tr&gt;<BR>&lt;th scope="col"&gt;<BR>EMPNO<BR>&lt;/th&gt;<BR>&lt;th scope="col"&gt;<BR>ENAME<BR>&lt;/th&gt;<BR>&lt;/tr&gt;<BR>&lt;tr&gt;<BR>&lt;td align="right"&gt;<BR>7369<BR>&lt;/td&gt;<BR>&lt;td&gt;<BR>SMITH<BR>&lt;/td&gt;<BR>&lt;/tr&gt;<BR>&lt;tr&gt;<BR>&lt;td align="right"&gt;<BR>7499<BR>&lt;/td&gt;<BR>&lt;td&gt;<BR>ALLEN<BR>&lt;/td&gt;<BR>&lt;/tr&gt;<BR>&lt;/table&gt;<BR>&lt;p&gt;</P>
<P><A href="mailto:scott@O9I.US.ORACLE.COM"><FONT color=#007799>"&gt;scott@O9I.US.ORACLE.COM&amp;gt</FONT></A>; spool off<BR>&lt;br&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;</P></DIV>
<P>用ie打开emp.htm文件后的样式如下:</P>
<P><IMG src="http://blog.itpub.net/resserver.php?blogId=6&amp;resource=sqlplushtml.JPG"> </P>
<P>现在看看spool off的情况下:</P>
<DIV class=code>
<P><A href="mailto:scott@O9I.US.ORACLE.COM"><FONT color=#007799>"&gt;scott@O9I.US.ORACLE.COM&amp;gt</FONT></A>; set markup html on spool off<BR>&lt;br&gt;<BR><A href="mailto:scott@O9I.US.ORACLE.COM"><FONT color=#007799>"&gt;scott@O9I.US.ORACLE.COM&amp;gt</FONT></A>; spool c:emp2.htm<BR>&lt;br&gt;<BR><A href="mailto:scott@O9I.US.ORACLE.COM"><FONT color=#007799>"&gt;scott@O9I.US.ORACLE.COM&amp;gt</FONT></A>; /<BR>&lt;br&gt;<BR>&lt;p&gt;<BR>&lt;table border='1' width='90%' align='center' summary='Script outpu<BR>......此处省略<BR><A href="mailto:scott@O9I.US.ORACLE.COM"><FONT color=#007799>"&gt;scott@O9I.US.ORACLE.COM&amp;gt</FONT></A>; spool off<BR>&lt;br&gt;<BR><A href="mailto:scott@O9I.US.ORACLE.COM"><FONT color=#007799>"&gt;scott@O9I.US.ORACLE.COM&amp;gt</FONT></A>;</P></DIV>
<P>查看生成的emp2.htm文件的内容:</P>
<DIV class=code>
<P><A href="mailto:scott@O9I.US.ORACLE.COM"><FONT color=#007799>"&gt;scott@O9I.US.ORACLE.COM&amp;gt</FONT></A>; /<BR>&lt;br&gt;<BR>&lt;p&gt;<BR>&lt;table border='1' width='90%' align='center' summary='Script output'&gt;<BR>&lt;tr&gt;<BR>&lt;th scope="col"&gt;<BR>EMPNO<BR>&lt;/th&gt;<BR>&lt;th scope="col"&gt;<BR>ENAME<BR>&lt;/th&gt;<BR>&lt;/tr&gt;<BR>&lt;tr&gt;<BR>&lt;td align="right"&gt;<BR>7369<BR>&lt;/td&gt;<BR>&lt;td&gt;<BR>SMITH<BR>&lt;/td&gt;<BR>&lt;/tr&gt;<BR>&lt;tr&gt;<BR>&lt;td align="right"&gt;<BR>7499<BR>&lt;/td&gt;<BR>&lt;td&gt;<BR>ALLEN<BR>&lt;/td&gt;<BR>&lt;/tr&gt;<BR>&lt;/table&gt;<BR>&lt;p&gt;</P>
<P><A href="mailto:scott@O9I.US.ORACLE.COM"><FONT color=#007799>"&gt;scott@O9I.US.ORACLE.COM&amp;gt</FONT></A>; spool off</P></DIV>
<P>由于这段代码中没有html文件头, 所以我们可以直接作为内容插入到网页中, 现在我们就可以把这段代码放到下面作为示例:</P>
<TABLE width="90%" align=center summary="Script output" border=1>
<TBODY>
<TR>
<TH scope=col>EMPNO </TH>
<TH scope=col>ENAME </TH></TR>
<TR>
<TD align=right>7369 </TD>
<TD>SMITH </TD></TR>
<TR>
<TD align=right>7499 </TD>
<TD>ALLEN </TD></TR></TBODY></TABLE>
<P>
<P><STRONG>总结:</STRONG> 如果要生成一个完整的html文件, 就使用spool on选项, 如果只是要内容部分(用来添加到一个现有的网页中), 那么就使用spool off选项.</P>
<P>另外, set markup html还有很多选项可以用来定制生成的html的各个部分, 例如head, body, table等, 这里不再逐一说明, 详细信息可以参考SQL*Plus User's Guide and Reference.</P>
<P><STRONG>适用场景:</STRONG> 当需要定时更新一个从数据库中获取内容的静态页面时, 这种方法绝对是快捷的并且容易实现的.</P><img src ="http://www.blogjava.net/konhon/aggbug/15738.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-10-17 18:53 <a href="http://www.blogjava.net/konhon/archive/2005/10/17/15738.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>也许你还不知道 - sqlplus的小秘密(3) </title><link>http://www.blogjava.net/konhon/archive/2005/10/17/15737.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Mon, 17 Oct 2005 10:52:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/10/17/15737.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/15737.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/10/17/15737.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/15737.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/15737.html</trackback:ping><description><![CDATA[<P>有没有过这样的经历? 在sql*plus中敲了很长的命令后, 突然发现想不起某个列的名字了, 如果取消当前的命令,待查询后再重敲, 那太痛苦了. 当然你可以另开一个sql*plus窗口进行查询, 但这里提供的方法更简单.</P>
<P>比如说, 你想查工资大于4000的员工的信息, 输入了下面的语句:</P>
<DIV class=code><PRE>scott@O9I.US.ORACLE.COM&gt; select deptno,
  2  empno,
  3  ename
  4  from emp
  5  where</PRE></DIV>
<P>这时, 你发现你想不起来工资的列名是什么了.<BR><BR>这种情况下, 只要在下一行以#开头, 就可以执行一条sql*plus命令, 执行完后, 刚才的语句可以继续输入 
<P></P>
<DIV class=code><PRE>scott@O9I.US.ORACLE.COM&gt; select deptno,
  2  empno,
  3  ename
  4  from emp
  5  where
  6  #desc emp<BR>
 Name                                      Null?    Type
 ----------------------------------------- -------- --------------

 EMPNO                                     NOT NULL NUMBER(4)
 ENAME                                              VARCHAR2(10)
 JOB                                                VARCHAR2(9)
 MGR                                                NUMBER(4)
 HIREDATE                                           DATE
 SAL                                                NUMBER(7,2)
 COMM                                               NUMBER(7,2)
 DEPTNO                                             NUMBER(2)

  6  sal &gt; 4000;

    DEPTNO      EMPNO ENAME
---------- ---------- ----------
        10       7839 KING

</PRE></DIV><img src ="http://www.blogjava.net/konhon/aggbug/15737.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-10-17 18:52 <a href="http://www.blogjava.net/konhon/archive/2005/10/17/15737.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>也许你还不知道 - sqlplus的小秘密(2) </title><link>http://www.blogjava.net/konhon/archive/2005/10/17/15736.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Mon, 17 Oct 2005 10:48:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/10/17/15736.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/15736.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/10/17/15736.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/15736.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/15736.html</trackback:ping><description><![CDATA[<P>Sql*plus中, 不允许sql语句中间有空行, 这在从其它地方拷贝脚本到sql*plus中执行时很麻烦. 比如下面的脚本:</P>
<DIV class=code><PRE>select deptno, empno, ename
from emp

where empno = '7788';</PRE></DIV>
<P>如果拷贝到sql*plus中执行, 就会出现错误:</P><BR>
<DIV class=code><PRE>scott@O9I.US.ORACLE.COM&gt; select deptno, empno, ename
  2  from emp
  3
where empno = '7788';
SP2-0734: unknown command beginning "where empn..." - rest of line ignored.
</PRE></DIV>
<P>原因是sqlplus遇到空行就认为是语句结束了.<BR>其实要改变这种现象, 只要使用SQLBLANKLINES参数就可以了.</P>
<DIV class=code><PRE>scott@O9I.US.ORACLE.COM&gt; SET SQLBLANKLINES ON
scott@O9I.US.ORACLE.COM&gt;
scott@O9I.US.ORACLE.COM&gt; select deptno, empno, ename
  2  from emp
  3
  4  where empno = '7788';

    DEPTNO      EMPNO ENAME
---------- ---------- ----------
        20       7788 SCOTT

</PRE></DIV><img src ="http://www.blogjava.net/konhon/aggbug/15736.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-10-17 18:48 <a href="http://www.blogjava.net/konhon/archive/2005/10/17/15736.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>也许你还不知道 - sqlplus的小秘密(1) </title><link>http://www.blogjava.net/konhon/archive/2005/10/17/15735.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Mon, 17 Oct 2005 10:47:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/10/17/15735.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/15735.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/10/17/15735.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/15735.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/15735.html</trackback:ping><description><![CDATA[<P>有没有为了dbms_output.put_line会"吃掉"最前面的空格而苦恼?</P>
<DIV class=code><PRE>scott@O9I.US.ORACLE.COM&gt; set serveroutput on
scott@O9I.US.ORACLE.COM&gt; exec dbms_output.put_line('   abc');
abc

PL/SQL procedure successfully completed.</PRE></DIV>
<P><BR>
<P>(俺以前曾经很苦恼为了保留空格, 尝试了加".", 加不可见字符等办法, 不过终究觉得不自然)<BR>实际上, 只要在set serveroutput on后加上format wrapped参数, 就可以避免这个问题</P>
<DIV class=code><PRE>scott@O9I.US.ORACLE.COM&gt; set serveroutput on format wrapped
scott@O9I.US.ORACLE.COM&gt; exec dbms_output.put_line('   abc');
   abc

PL/SQL procedure successfully completed.</PRE></DIV><img src ="http://www.blogjava.net/konhon/aggbug/15735.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-10-17 18:47 <a href="http://www.blogjava.net/konhon/archive/2005/10/17/15735.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle中大批量删除数据的方法</title><link>http://www.blogjava.net/konhon/archive/2005/10/17/15732.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Mon, 17 Oct 2005 10:20:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/10/17/15732.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/15732.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/10/17/15732.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/15732.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/15732.html</trackback:ping><description><![CDATA[批量删除海量数据通常都是很复杂及缓慢的，方法也很多，但是通常的概念是:分批删除，逐次提交。<BR>下面是我的删除过程，我的数据表可以通过主键删除，测试过Delete和For all两种方法，for all在这里并没有带来性能提高，所以仍然选择了批量直接删除。<BR><BR>首先创建一下过程，使用自制事务进行处理：<BR><BR><FONT style="BACKGROUND-COLOR: #d3d3d3" color=#000000>create or replace procedure delBigTab<BR>(<BR>p_TableName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in&nbsp;&nbsp;&nbsp; varchar2,<BR>p_Condition&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in&nbsp;&nbsp;&nbsp; varchar2,<BR>p_Count&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in&nbsp;&nbsp;&nbsp; varchar2<BR>)<BR>as<BR>pragma <STRONG>autonomous_transaction</STRONG>;<BR>n_delete number:=0;<BR>begin<BR>while 1=1 loop<BR>EXECUTE IMMEDIATE<BR>'delete from '||p_TableName||' where '||p_Condition||' and rownum &lt;= :rn'<BR>USING p_Count;<BR>if SQL%NOTFOUND then<BR>exit;<BR>else<BR>n_delete:=n_delete + SQL%ROWCOUNT;<BR>end if;<BR>commit;<BR>end loop;<BR>commit;<BR>DBMS_OUTPUT.PUT_LINE('Finished!');<BR>DBMS_OUTPUT.PUT_LINE('Totally '||to_char(n_delete)||' records deleted!');<BR>end;<BR></FONT><BR>以下是删除过程及时间:<BR>SQL&gt; create or replace procedure delBigTab<BR>&nbsp; 2&nbsp; (<BR>&nbsp; 3&nbsp;&nbsp;&nbsp; p_TableName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in&nbsp;&nbsp;&nbsp; varchar2,<BR>&nbsp; 4&nbsp;&nbsp;&nbsp; p_Condition&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in&nbsp;&nbsp;&nbsp; varchar2,<BR>&nbsp; 5&nbsp;&nbsp;&nbsp; p_Count&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in&nbsp;&nbsp;&nbsp; varchar2<BR>&nbsp; 6&nbsp; )<BR>&nbsp; 7&nbsp; as<BR>&nbsp; 8&nbsp;&nbsp; pragma autonomous_transaction;<BR>&nbsp; 9&nbsp;&nbsp; n_delete number:=0;<BR> 10&nbsp; begin<BR> 11&nbsp;&nbsp; while 1=1 loop<BR> 12&nbsp;&nbsp;&nbsp;&nbsp; EXECUTE IMMEDIATE<BR> 13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'delete from '||p_TableName||' where '||p_Condition||' and rownum &lt;= :rn'<BR> 14&nbsp;&nbsp;&nbsp;&nbsp; USING p_Count;<BR> 15&nbsp;&nbsp;&nbsp;&nbsp; if SQL%NOTFOUND then<BR> 16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<BR> 17&nbsp;&nbsp;&nbsp;&nbsp; else<BR> 18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n_delete:=n_delete + SQL%ROWCOUNT;<BR> 19&nbsp;&nbsp;&nbsp;&nbsp; end if;<BR> 20&nbsp;&nbsp;&nbsp;&nbsp; commit;<BR> 21&nbsp;&nbsp; end loop;<BR> 22&nbsp;&nbsp; commit;<BR> 23&nbsp;&nbsp; DBMS_OUTPUT.PUT_LINE('Finished!');<BR> 24&nbsp;&nbsp; DBMS_OUTPUT.PUT_LINE('Totally '||to_char(n_delete)||' records deleted!');<BR> 25&nbsp; end;<BR> 26&nbsp; /<BR><BR>Procedure created.<BR><BR>SQL&gt; set timing on<BR>SQL&gt; select min(NUMDLFLOGGUID) from HS_DLF_DOWNLOG_HISTORY;<BR><BR>MIN(NUMDLFLOGGUID)<BR>------------------<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 11000000<BR><BR>Elapsed: 00:00:00.23<BR>SQL&gt; exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID &lt; 11100000','10000');<BR><BR>PL/SQL procedure successfully completed.<BR><BR>Elapsed: 00:00:18.54<BR>SQL&gt; select min(NUMDLFLOGGUID) from HS_DLF_DOWNLOG_HISTORY;<BR><BR>MIN(NUMDLFLOGGUID)<BR>------------------<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 11100000<BR><BR>Elapsed: 00:00:00.18<BR>SQL&gt; set serveroutput on<BR>SQL&gt; exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID &lt; 11200000','10000');<BR>Finished!<BR>Totally <STRONG>96936</STRONG> records deleted!<BR><BR>PL/SQL procedure successfully completed.<BR><BR>Elapsed: <STRONG>00:00:18.61</STRONG><BR><STRONG>10万记录大约19s</STRONG><BR><BR>SQL&gt; exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID &lt; 11300000','10000');<BR>Finished!<BR>Totally 100000 records deleted!<BR><BR>PL/SQL procedure successfully completed.<BR><BR>Elapsed: 00:00:18.62<BR>SQL&gt; exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID &lt; 11400000','10000');<BR>Finished!<BR>Totally 100000 records deleted!<BR><BR>PL/SQL procedure successfully completed.<BR><BR>Elapsed: 00:00:18.85<BR>SQL&gt; <BR>SQL&gt; exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID &lt; 13000000','10000');<BR>Finished!<BR>Totally 1000000 records deleted!<BR><BR>PL/SQL procedure successfully completed.<BR><BR>Elapsed: 00:03:13.87<BR><BR><STRONG>100万记录大约3分钟</STRONG><BR>SQL&gt; exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID &lt; 20000000','10000');<BR> <BR>Finished!<BR>Totally 6999977 records deleted!<BR><BR>PL/SQL procedure successfully completed.<BR><BR>Elapsed: 00:27:24.69<BR><STRONG>700万大约27分钟</STRONG><BR><BR><img src ="http://www.blogjava.net/konhon/aggbug/15732.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-10-17 18:20 <a href="http://www.blogjava.net/konhon/archive/2005/10/17/15732.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用户自定义的数据库备份</title><link>http://www.blogjava.net/konhon/archive/2005/10/17/15719.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Mon, 17 Oct 2005 07:45:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/10/17/15719.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/15719.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/10/17/15719.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/15719.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/15719.html</trackback:ping><description><![CDATA[<P align=center><SPAN id=ArticleContent1_ArticleContent1_lblContent>&nbsp; <B><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT color=#993300 size=2>用户自定义的数据库备份</FONT></SPAN></B><B><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT color=#993300 size=2>&nbsp; </FONT></P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center>
<TABLE style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; WIDTH: 414pt; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-table-lspace: 9.0pt; mso-table-rspace: 9.0pt; mso-table-anchor-vertical: margin; mso-table-anchor-horizontal: margin; mso-table-left: left; mso-table-top: 24.4pt" cellSpacing=0 cellPadding=0 width=552 align=left border=1>
<TBODY>
<TR>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 117pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid" vAlign=top width=156>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><B><FONT size=2><FONT color=#993300><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">备份类型</SPAN><SPAN lang=EN-US> 
<P></P></SPAN></FONT></FONT></B>
<P></P></TD>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 108pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-left-alt: solid windowtext .5pt" vAlign=top width=144>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><B><FONT size=2><FONT color=#993300><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">备份方法</SPAN><SPAN lang=EN-US> 
<P></P></SPAN></FONT></FONT></B>
<P></P></TD>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 189pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-left-alt: solid windowtext .5pt" vAlign=top width=252>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><B><FONT size=2><FONT color=#993300><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">示例</SPAN><SPAN lang=EN-US> 
<P></P></SPAN></FONT></FONT></B>
<P></P></TD></TR>
<TR>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 117pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=156>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><FONT size=2><FONT color=#993300><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数据文件</SPAN><SPAN lang=EN-US> 
<P></P></SPAN></FONT></FONT>
<P></P></TD>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 108pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=144>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><FONT size=2><FONT color=#993300><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">操作系统命令或工具</SPAN><SPAN lang=EN-US> 
<P></P></SPAN></FONT></FONT>
<P></P></TD>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 189pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=252>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><SPAN lang=EN-US><FONT size=2><FONT color=#993300>C:\COPY datafile1.ora datafile.bak 
<P></P></FONT></FONT></SPAN>
<P></P></TD></TR>
<TR>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 117pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=156>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><FONT size=2><FONT color=#993300><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">归档重做日志文件</SPAN><SPAN lang=EN-US> 
<P></P></SPAN></FONT></FONT>
<P></P></TD>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 108pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=144>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><FONT size=2><FONT color=#993300><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">操作系统命令或工具</SPAN><SPAN lang=EN-US> 
<P></P></SPAN></FONT></FONT>
<P></P></TD>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 189pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=252>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><SPAN lang=EN-US><FONT size=2><FONT color=#993300>C:\COPY log_01_23.arc log_01_23.bak 
<P></P></FONT></FONT></SPAN>
<P></P></TD></TR>
<TR>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 117pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=156>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><FONT size=2><FONT color=#993300><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">控制文件</SPAN><SPAN lang=EN-US> 
<P></P></SPAN></FONT></FONT>
<P></P></TD>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 108pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=144>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><FONT size=2><FONT color=#993300><SPAN lang=EN-US>SQL</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">命令</SPAN><SPAN lang=EN-US> 
<P></P></SPAN></FONT></FONT>
<P></P></TD>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 189pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=252>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><SPAN lang=EN-US><FONT size=2><FONT color=#993300>SQL&gt;ALTER DATABASE BACKUP CONTROLFILE<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>TO confile.bak; 
<P></P></FONT></FONT></SPAN>
<P></P></TD></TR>
<TR>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 117pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=156>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><FONT size=2><FONT color=#993300><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">初始化参数文件</SPAN><SPAN lang=EN-US> 
<P></P></SPAN></FONT></FONT>
<P></P></TD>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 108pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=144>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><FONT size=2><FONT color=#993300><SPAN lang=EN-US>SQL</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">命令</SPAN><SPAN lang=EN-US> 
<P></P></SPAN></FONT></FONT>
<P></P></TD>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 189pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=252>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><SPAN lang=EN-US><FONT size=2><FONT color=#993300>SQL&gt;CREATE<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>PFILE=SIDinit.ora FROM<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>SPFILE; 
<P></P></FONT></FONT></SPAN>
<P></P></TD></TR>
<TR>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 117pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=156>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><FONT size=2><FONT color=#993300><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">网络配置与口令文件</SPAN><SPAN lang=EN-US> 
<P></P></SPAN></FONT></FONT>
<P></P></TD>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 108pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=144>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><FONT size=2><FONT color=#993300><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">操作系统命令</SPAN><SPAN lang=EN-US> 
<P></P></SPAN></FONT></FONT>
<P></P></TD>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 189pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=252>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><SPAN lang=EN-US><FONT size=2><FONT color=#993300>C:\COPY tnsnames.ora tnsnames.bak 
<P></P></FONT></FONT></SPAN>
<P></P></TD></TR>
<TR>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 117pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=156>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><FONT size=2><FONT color=#993300><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数据库逻辑对象（表、索引、存储过程等）</SPAN><SPAN lang=EN-US> 
<P></P></SPAN></FONT></FONT>
<P></P></TD>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 108pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=144>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><FONT size=2><FONT color=#993300><SPAN lang=EN-US>Export</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工具</SPAN><SPAN lang=EN-US> 
<P></P></SPAN></FONT></FONT>
<P></P></TD>
<TD style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 189pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=252>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><SPAN lang=EN-US><FONT size=2><FONT color=#993300>C:\EXPORT system/manager<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>TABLE 
<P></P></FONT></FONT></SPAN>
<P></P>
<P class=MsoNormal style="mso-element: frame; mso-element-frame-hspace: 9.0pt; mso-element-wrap: no-wrap-beside; mso-element-anchor-horizontal: margin; mso-element-top: 24.4pt; mso-height-rule: exactly"><SPAN lang=EN-US><FONT size=2><FONT color=#993300>=hr.employees file=emp.dmp 
<P></P></FONT></FONT></SPAN>
<P></P></TD></TR></TBODY></TABLE></P></SPAN><SPAN lang=EN-US>
<P></P></SPAN></B>
<P></P><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
<P class=MsoNormal><BR><BR><FONT color=#993300 size=2>&nbsp;</FONT></P>
<P class=MsoNormal><FONT color=#993300 size=2></FONT>&nbsp;</P>
<P class=MsoNormal><FONT color=#993300 size=2></FONT>&nbsp;</P>
<P class=MsoNormal><FONT color=#993300 size=2></FONT>&nbsp;</P>
<P class=MsoNormal><FONT color=#993300 size=2></FONT>&nbsp;</P>
<P class=MsoNormal><FONT color=#993300 size=2><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>如果数据库运行在不归档模式下，可以对数据库进行不一致的完全备份，或者对某个表空间或数据文件进行单独的备份。</FONT></P></SPAN>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT color=#993300 size=2>如果数据库运行在不归档模式下，只能在关闭状态下对数据库进行一致的完全备份</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l4 level1 lfo1"><FONT size=2><FONT color=#993300><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一、<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></B><B><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表空间或数据文件的脱机备份</SPAN></B></FONT></FONT></P>
<P class=MsoNormal><FONT size=2><FONT color=#993300><SPAN lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如果数据库运行在<U>归档模式</U>下，可以在打开状态下对数据库中处于脱机状态的表空间或数据文件进行备份。在备份期间数据库中其它的表空间或数据文件仍然可以被用户使用。</SPAN></FONT></FONT></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US><FONT color=#993300 size=2>SQL&gt;ALTER<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>TABLESPACE<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>users<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>OFFLINE<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>NORMAL;</FONT></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US><FONT color=#993300 size=2>C:\COPY<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>E:\oracle\oradata\users01.dbf<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>F:\backup\users01.bak</FONT></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US><FONT color=#993300 size=2>SQL&gt;ALTER<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>TABLESPACE<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>users<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>ONLINE;</FONT></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><SPAN lang=EN-US><FONT color=#993300 size=2>SQL&gt;ALTER<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>SYSTEM<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>ARCHIVE<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>LOG<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>CURRENT;</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l4 level1 lfo1"><FONT size=2><FONT color=#993300><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">二、<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></B><B><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表空间或数据文件的联机备份</SPAN></B></FONT></FONT></P>
<P class=MsoNormal style="TEXT-INDENT: 21.75pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT color=#993300 size=2>如果数据库运行在<U>归档模式</U>下，可以在打开状态下对数据库中处于联机状态的表空间或数据文件进行备份。在备份期间这些表空间或数据文件仍然可以被用户使用。</FONT></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21.75pt"><SPAN lang=EN-US><FONT color=#993300 size=2>SQL&gt;ALTER<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>TABLESPACE<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>users<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>BEGIN<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>BACKUP;</FONT></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21.75pt"><SPAN lang=EN-US><FONT color=#993300 size=2>C:\COPY<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>E:\oracle\oradata\users01.dbf<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>F:\backup\users01.bak</FONT></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21.75pt"><SPAN lang=EN-US><FONT color=#993300 size=2>SQL&gt;ALTER<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>TABLESPACE<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>users<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>END<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>BACKUP;</FONT></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21.75pt"><SPAN lang=EN-US><FONT color=#993300 size=2>SQL&gt;ALTER<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>SYSTEM<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>ARCHIVE<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>LOG<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>CURRENT;</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l4 level1 lfo1"><FONT size=2><FONT color=#993300><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">三、<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></B><B><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">处理备份故障</SPAN></B></FONT></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 21pt"><FONT size=2><FONT color=#993300><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如果在备份过程中发生故障，导致备份突然中断，那么在下一次启动数据库时备份表空间的数据文件将会仍然处于备份模式下，因此</SPAN><SPAN lang=EN-US>ORACLE</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">会要求进行数据库恢复。</SPAN></FONT></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 39pt; TEXT-INDENT: -18pt; tab-stops: list 39.0pt; mso-list: l4 level2 lfo1"><FONT size=2><FONT color=#993300><SPAN lang=EN-US>1、<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">利用</SPAN><SPAN lang=EN-US>ALTER<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>DATABASE<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>END<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>BACKUP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">语句退出备份模式</SPAN></FONT></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 39pt"><SPAN lang=EN-US><FONT color=#993300 size=2>SQL&gt;STARTUP<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>MOUNT</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 39pt"><SPAN lang=EN-US><FONT color=#993300 size=2>SQL&gt;SELECT * FROM V$BACKUP WHERE STATUS=’ACTIVE’</FONT></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 31.5pt; mso-char-indent-count: 3.0; mso-char-indent-size: 10.5pt"><FONT size=2><FONT color=#993300><SPAN lang=EN-US>(</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">查询哪些数据文件处于备份模式</SPAN><SPAN lang=EN-US>)</SPAN></FONT></FONT></P>
<P class=MsoNormal style="TEXT-INDENT: 37.5pt"><SPAN lang=EN-US><FONT color=#993300 size=2>SQL&gt;ALTER<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>DATABASE<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>END BACKUP;</FONT></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 37.5pt"><SPAN lang=EN-US><FONT color=#993300 size=2>SQL&gt;ALTER<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>DATABASE<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>OPEN;</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 39pt; TEXT-INDENT: -18pt; tab-stops: list 39.0pt; mso-list: l4 level2 lfo1"><FONT size=2><FONT color=#993300><SPAN lang=EN-US>2、<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">利用</SPAN><SPAN lang=EN-US>RECOVER</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">命令退出备份模式</SPAN></FONT></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 21pt"><SPAN lang=EN-US><FONT size=2><FONT color=#993300><SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>SQL&gt;STARTUP<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>MOUNT</FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 21pt"><SPAN lang=EN-US><FONT size=2><FONT color=#993300><SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>SQL&gt;RECOVER<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>DATABASE</FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 21pt"><SPAN lang=EN-US><FONT size=2><FONT color=#993300><SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>SQL&gt;ALTER<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>DATABASE<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>OPEN;</FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l4 level1 lfo1"><FONT size=2><FONT color=#993300><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">四、<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></B><B><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">控制文件备份为二进制文件</SPAN></B></FONT></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 21pt"><SPAN lang=EN-US><FONT color=#993300 size=2>SQL&gt;ALTER<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>DATABASE<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>BACKUP<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>CONTROLFILE<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>TO</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 21pt; TEXT-INDENT: 21.75pt"><SPAN lang=EN-US><FONT color=#993300 size=2>‘E:\backup\cfile.bak’<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>REUSE;</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l4 level1 lfo1"><FONT size=2><FONT color=#993300><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">五、<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></B><B><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">控制文件备份到跟踪文件中</SPAN></B></FONT></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 21pt"><SPAN lang=EN-US><FONT color=#993300 size=2>SQL&gt;ALTER<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>DATABASE<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>BACKUP<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>CONTROLFILE<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>TO<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>TRACE;</FONT></SPAN></P><FONT size=2><FONT color=#993300><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">（数据库处于加载状态时，利用上面语句可以将控制文件备份到跟踪文件中）</SPAN> </FONT></FONT></SPAN><BR><img src ="http://www.blogjava.net/konhon/aggbug/15719.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-10-17 15:45 <a href="http://www.blogjava.net/konhon/archive/2005/10/17/15719.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQLServer和Oracle常用函数对比</title><link>http://www.blogjava.net/konhon/archive/2005/10/13/15447.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Thu, 13 Oct 2005 12:14:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/10/13/15447.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/15447.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/10/13/15447.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/15447.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/15447.html</trackback:ping><description><![CDATA[<SPAN id=ArticleContent1_ArticleContent1_lblContent>数学函数&nbsp;<BR>　　1.绝对值&nbsp;<BR>　　S:select&nbsp;abs(-1)&nbsp;value&nbsp;<BR>　　O:select&nbsp;abs(-1)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　2.取整(大)&nbsp;<BR>　　S:select&nbsp;ceiling(-1.001)&nbsp;value&nbsp;<BR>　　O:select&nbsp;ceil(-1.001)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　3.取整（小）&nbsp;<BR>　　S:select&nbsp;floor(-1.001)&nbsp;value&nbsp;<BR>　　O:select&nbsp;floor(-1.001)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　4.取整（截取）&nbsp;<BR>　　S:select&nbsp;cast(-1.002&nbsp;as&nbsp;int)&nbsp;value&nbsp;<BR>　　O:select&nbsp;trunc(-1.002)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　5.四舍五入&nbsp;<BR>　　S:select&nbsp;round(1.23456,4)&nbsp;value&nbsp;1.23460&nbsp;<BR>　　O:select&nbsp;round(1.23456,4)&nbsp;value&nbsp;from&nbsp;dual&nbsp;1.2346&nbsp;<BR><BR>　　6.e为底的幂&nbsp;<BR>　　S:select&nbsp;Exp(1)&nbsp;value&nbsp;2.7182818284590451&nbsp;<BR>　　O:select&nbsp;Exp(1)&nbsp;value&nbsp;from&nbsp;dual&nbsp;2.71828182&nbsp;<BR><BR>　　7.取e为底的对数&nbsp;<BR>　　S:select&nbsp;log(2.7182818284590451)&nbsp;value&nbsp;1&nbsp;<BR>　　O:select&nbsp;ln(2.7182818284590451)&nbsp;value&nbsp;from&nbsp;dual;&nbsp;1&nbsp;<BR><BR>　　8.取10为底对数&nbsp;<BR>　　S:select&nbsp;log10(10)&nbsp;value&nbsp;1&nbsp;<BR>　　O:select&nbsp;log(10,10)&nbsp;value&nbsp;from&nbsp;dual;&nbsp;1&nbsp;<BR><BR>　　9.取平方&nbsp;<BR>　　S:select&nbsp;SQUARE(4)&nbsp;value&nbsp;16&nbsp;<BR>　　O:select&nbsp;power(4,2)&nbsp;value&nbsp;from&nbsp;dual&nbsp;16&nbsp;<BR><BR>　　10.取平方根&nbsp;<BR>　　S:select&nbsp;SQRT(4)&nbsp;value&nbsp;2&nbsp;<BR>　　O:select&nbsp;SQRT(4)&nbsp;value&nbsp;from&nbsp;dual&nbsp;2&nbsp;<BR><BR>　　11.求任意数为底的幂&nbsp;<BR>　　S:select&nbsp;power(3,4)&nbsp;value&nbsp;81&nbsp;<BR>　　O:select&nbsp;power(3,4)&nbsp;value&nbsp;from&nbsp;dual&nbsp;81&nbsp;<BR><BR>　　12.取随机数&nbsp;<BR>　　S:select&nbsp;rand()&nbsp;value&nbsp;<BR>　　O:select&nbsp;sys.dbms_random.value(0,1)&nbsp;value&nbsp;from&nbsp;dual;&nbsp;<BR><BR>　　13.取符号&nbsp;<BR>　　S:select&nbsp;sign(-8)&nbsp;value&nbsp;-1&nbsp;<BR>　　O:select&nbsp;sign(-8)&nbsp;value&nbsp;from&nbsp;dual&nbsp;-1&nbsp;<BR><BR>　　14.圆周率&nbsp;<BR>　　S:SELECT&nbsp;PI()&nbsp;value&nbsp;3.1415926535897931&nbsp;<BR>　　O:不知道&nbsp;<BR><BR>　　15.sin,cos,tan&nbsp;参数都以弧度为单位&nbsp;<BR>　　例如：select&nbsp;sin(PI()/2)&nbsp;value&nbsp;得到1（SQLServer）&nbsp;<BR><BR>　　16.Asin,Acos,Atan,Atan2&nbsp;返回弧度&nbsp;<BR><BR>　　17.弧度角度互换(SQLServer，Oracle不知道)&nbsp;<BR>　　DEGREES：弧度-〉角度&nbsp;<BR>　　RADIANS：角度-〉弧度&nbsp;<BR><BR>数值间比较&nbsp;<BR><BR>　　18.&nbsp;求集合最大值&nbsp;<BR>　　S:select&nbsp;max(value)&nbsp;value&nbsp;from&nbsp;<BR>　　(select&nbsp;1&nbsp;value&nbsp;<BR>　　union&nbsp;<BR>　　select&nbsp;-2&nbsp;value&nbsp;<BR>　　union&nbsp;<BR>　　select&nbsp;4&nbsp;value&nbsp;<BR>　　union&nbsp;<BR>　　select&nbsp;3&nbsp;value)a&nbsp;<BR><BR>　　O:select&nbsp;greatest(1,-2,4,3)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　19.&nbsp;求集合最小值&nbsp;<BR>　　S:select&nbsp;min(value)&nbsp;value&nbsp;from&nbsp;<BR>　　(select&nbsp;1&nbsp;value&nbsp;<BR>　　union&nbsp;<BR>　　select&nbsp;-2&nbsp;value&nbsp;<BR>　　union&nbsp;<BR>　　select&nbsp;4&nbsp;value&nbsp;<BR>　　union&nbsp;<BR>　　select&nbsp;3&nbsp;value)a&nbsp;<BR><BR>　　O:select&nbsp;least(1,-2,4,3)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　20.如何处理null值(F2中的null以10代替)&nbsp;<BR>　　S:select&nbsp;F1,IsNull(F2,10)&nbsp;value&nbsp;from&nbsp;Tbl&nbsp;<BR>　　O:select&nbsp;F1,nvl(F2,10)&nbsp;value&nbsp;from&nbsp;Tbl&nbsp;<BR><BR>　　21.求字符序号&nbsp;<BR>　　S:select&nbsp;ascii('a')&nbsp;value&nbsp;<BR>　　O:select&nbsp;ascii('a')&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　22.从序号求字符&nbsp;<BR>　　S:select&nbsp;char(97)&nbsp;value&nbsp;<BR>　　O:select&nbsp;chr(97)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　23.连接&nbsp;<BR>　　S:select&nbsp;'11'+'22'+'33'&nbsp;value&nbsp;<BR>　　O:select&nbsp;CONCAT('11','22')　　33&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>23.子串位置&nbsp;--返回3&nbsp;<BR>　　S:select&nbsp;CHARINDEX('s','sdsq',2)&nbsp;value&nbsp;<BR>　　O:select&nbsp;INSTR('sdsq','s',2)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　23.模糊子串的位置&nbsp;--返回2,参数去掉中间%则返回7&nbsp;<BR>　　S:select&nbsp;patindex('%d%q%','sdsfasdqe')&nbsp;value&nbsp;<BR>　　O:oracle没发现，但是instr可以通过第四个参数控制出现次数&nbsp;<BR>　　select&nbsp;INSTR('sdsfasdqe','sd',1,2)&nbsp;value&nbsp;from&nbsp;dual&nbsp;返回6&nbsp;<BR><BR>　　24.求子串&nbsp;<BR>　　S:select&nbsp;substring('abcd',2,2)&nbsp;value&nbsp;<BR>　　O:select&nbsp;substr('abcd',2,2)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　25.子串代替&nbsp;返回aijklmnef&nbsp;<BR>　　S:SELECT&nbsp;STUFF('abcdef',&nbsp;2,&nbsp;3,&nbsp;'ijklmn')&nbsp;value&nbsp;<BR>　　O:SELECT&nbsp;Replace('abcdef',&nbsp;'bcd',&nbsp;'ijklmn')&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　26.子串全部替换&nbsp;<BR>　　S:没发现&nbsp;<BR>　　O:select&nbsp;Translate('fasdbfasegas','fa','我'&nbsp;)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　27.长度&nbsp;<BR>　　S:len,datalength&nbsp;<BR>　　O:length&nbsp;<BR><BR>　　28.大小写转换&nbsp;lower,upper&nbsp;<BR><BR>　　29.单词首字母大写&nbsp;<BR>　　S:没发现&nbsp;<BR>　　O:select&nbsp;INITCAP('abcd&nbsp;dsaf&nbsp;df')&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　30.左补空格（LPAD的第一个参数为空格则同space函数）&nbsp;<BR>　　S:select&nbsp;space(10)+'abcd'&nbsp;value&nbsp;<BR>　　O:select&nbsp;LPAD('abcd',14)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　31.右补空格（RPAD的第一个参数为空格则同space函数）&nbsp;<BR>　　S:select&nbsp;'abcd'+space(10)&nbsp;value&nbsp;<BR>　　O:select&nbsp;RPAD('abcd',14)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　32.删除空格&nbsp;<BR>　　S:ltrim,rtrim&nbsp;<BR>　　O:ltrim,rtrim,trim&nbsp;<BR><BR>　　33.&nbsp;重复字符串&nbsp;<BR>　　S:select&nbsp;REPLICATE('abcd',2)&nbsp;value&nbsp;<BR>　　O:没发现&nbsp;<BR><BR>　　34.发音相似性比较(这两个单词返回值一样，发音相同)&nbsp;<BR>　　S:SELECT&nbsp;SOUNDEX&nbsp;('Smith'),&nbsp;SOUNDEX&nbsp;('Smythe')&nbsp;<BR>　　O:SELECT&nbsp;SOUNDEX&nbsp;('Smith'),&nbsp;SOUNDEX&nbsp;('Smythe')&nbsp;from&nbsp;dual&nbsp;<BR>　　SQLServer中用SELECT&nbsp;DIFFERENCE('Smithers',&nbsp;'Smythers')&nbsp;比较soundex的差&nbsp;<BR>　　返回0-4，4为同音，1最高&nbsp;<BR><BR>日期函数&nbsp;<BR>　　35.系统时间&nbsp;<BR>　　S:select&nbsp;getdate()&nbsp;value&nbsp;<BR>　　O:select&nbsp;sysdate&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　36.前后几日&nbsp;<BR>　　直接与整数相加减&nbsp;<BR><BR>　　37.求日期&nbsp;<BR>　　S:select&nbsp;convert(char(10),getdate(),20)&nbsp;value&nbsp;<BR>　　O:select&nbsp;trunc(sysdate)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR>　　select&nbsp;to_char(sysdate,'yyyy-mm-dd')&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　38.求时间&nbsp;<BR>　　S:select&nbsp;convert(char(8),getdate(),108)&nbsp;value&nbsp;<BR>　　O:select&nbsp;to_char(sysdate,'hh24:mm:ss')&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>39.取日期时间的其他部分&nbsp;<BR>　　S:DATEPART&nbsp;和&nbsp;DATENAME&nbsp;函数&nbsp;（第一个参数决定）&nbsp;<BR>　　O:to_char函数&nbsp;第二个参数决定&nbsp;<BR><BR>　　参数---------------------------------下表需要补充&nbsp;<BR>　　year&nbsp;yy,&nbsp;yyyy&nbsp;<BR>　　quarter&nbsp;qq,&nbsp;q&nbsp;(季度)&nbsp;<BR>　　month&nbsp;mm,&nbsp;m&nbsp;(m&nbsp;O无效)&nbsp;<BR>　　dayofyear&nbsp;dy,&nbsp;y&nbsp;(O表星期)&nbsp;<BR>　　day&nbsp;dd,&nbsp;d&nbsp;(d&nbsp;O无效)&nbsp;<BR>　　week&nbsp;wk,&nbsp;ww&nbsp;(wk&nbsp;O无效)&nbsp;<BR>　　weekday&nbsp;dw&nbsp;(O不清楚)&nbsp;<BR>　　Hour&nbsp;hh,hh12,hh24&nbsp;(hh12,hh24&nbsp;S无效)&nbsp;<BR>　　minute&nbsp;mi,&nbsp;n&nbsp;(n&nbsp;O无效)&nbsp;<BR>　　second&nbsp;ss,&nbsp;s&nbsp;(s&nbsp;O无效)&nbsp;<BR>　　millisecond&nbsp;ms&nbsp;(O无效)&nbsp;<BR>　　----------------------------------------------&nbsp;<BR><BR>　　40.当月最后一天&nbsp;<BR>　　S:不知道&nbsp;<BR>　　O:select&nbsp;LAST_DAY(sysdate)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　41.本星期的某一天（比如星期日）&nbsp;<BR>　　S:不知道&nbsp;<BR>　　O:SELECT&nbsp;Next_day(sysdate,7)&nbsp;vaule&nbsp;FROM&nbsp;DUAL;&nbsp;<BR><BR>　　42.字符串转时间&nbsp;<BR>　　S:可以直接转或者select&nbsp;cast('2004-09-08'as&nbsp;datetime)&nbsp;value&nbsp;<BR>　　O:SELECT&nbsp;To_date('2004-01-05&nbsp;22:09:38','yyyy-mm-dd&nbsp;hh24-mi-ss')&nbsp;vaule&nbsp;FROM&nbsp;DUAL;&nbsp;<BR><BR>　　43.求两日期某一部分的差（比如秒）&nbsp;<BR>　　S:select&nbsp;datediff(ss,getdate(),getdate()+12.3)&nbsp;value&nbsp;<BR>　　O:直接用两个日期相减（比如d1-d2=12.3）&nbsp;<BR>　　SELECT&nbsp;(d1-d2)*24*60*60&nbsp;vaule&nbsp;FROM&nbsp;DUAL;&nbsp;<BR><BR>　　44.根据差值求新的日期（比如分钟）&nbsp;<BR>　　S:select&nbsp;dateadd(mi,8,getdate())&nbsp;value&nbsp;<BR>　　O:SELECT&nbsp;sysdate+8/60/24&nbsp;vaule&nbsp;FROM&nbsp;DUAL;&nbsp;<BR><BR>　　45.求不同时区时间&nbsp;<BR>　　S:不知道&nbsp;<BR>　　O:SELECT&nbsp;New_time(sysdate,'ydt','gmt'&nbsp;)&nbsp;vaule&nbsp;FROM&nbsp;DUAL;&nbsp;<BR><BR>　　-----时区参数,北京在东8区应该是Ydt-------&nbsp;<BR>　　AST&nbsp;ADT&nbsp;大西洋标准时间&nbsp;<BR>　　BST&nbsp;BDT&nbsp;白令海标准时间&nbsp;<BR>　　CST&nbsp;CDT&nbsp;中部标准时间&nbsp;<BR>　　EST&nbsp;EDT&nbsp;东部标准时间&nbsp;<BR>　　GMT&nbsp;格林尼治标准时间&nbsp;<BR>　　HST&nbsp;HDT&nbsp;阿拉斯加?夏威夷标准时间&nbsp;<BR>　　MST&nbsp;MDT&nbsp;山区标准时间&nbsp;<BR>　　NST&nbsp;纽芬兰标准时间&nbsp;<BR>　　PST&nbsp;PDT&nbsp;太平洋标准时间&nbsp;<BR>　　YST&nbsp;YDT&nbsp;YUKON标准时间</SPAN> <BR><img src ="http://www.blogjava.net/konhon/aggbug/15447.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-10-13 20:14 <a href="http://www.blogjava.net/konhon/archive/2005/10/13/15447.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle入门知识</title><link>http://www.blogjava.net/konhon/archive/2005/10/06/14884.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Thu, 06 Oct 2005 08:38:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/10/06/14884.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/14884.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/10/06/14884.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/14884.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/14884.html</trackback:ping><description><![CDATA[<SPAN class=bold><SPAN class=smalltxt><STRONG><FONT face=Verdana>oracle入门知识</FONT></STRONG></SPAN></SPAN><SPAN class=bold><SPAN class=smalltxt><STRONG><FONT face="Comic Sans MS"><BR><BR></FONT></STRONG></SPAN></SPAN>一个表空间只能属于一个数据库&nbsp;&nbsp;<BR>每个数据库最少有一个控制文件（建议3个，分别放在不同的磁盘上）&nbsp;&nbsp;<BR>每个数据库最少有一个表空间（SYSTEM表空间）&nbsp;&nbsp;<BR>建立SYSTEM表空间的目的是尽量将目的相同的表存放在一起，以提高使用效率，只应存放数据字典&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>每个数据库最少有两个联机日志组，每组最少一个联机日志文件&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>一个数据文件只能属于一个表空间&nbsp;&nbsp;<BR>一个数据文件一旦被加入到一个表空间中，就不能再从这个表空间中移走，也不能再加入到其他表空间中&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>建立新的表空间需要建立新的数据文件&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>COMMIT后，数据不一定立即写盘（数据文件）&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>一个事务即使不被提交，也会被写入到重做日志中。&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>oracle server可以同时启动多个数据库&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>一套操作系统上可以安装多个版本的ORACLE数据库系统（UNIX可以，NT不可以）&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>一套ORACLE数据库系统中可以有多个ORACLE数据库及其相对应的实例 <BR><BR><img src ="http://www.blogjava.net/konhon/aggbug/14884.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-10-06 16:38 <a href="http://www.blogjava.net/konhon/archive/2005/10/06/14884.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>