﻿<?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-superwei-文章分类-DataBase</title><link>http://www.blogjava.net/superwei/category/19914.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 03 Sep 2012 19:08:20 GMT</lastBuildDate><pubDate>Mon, 03 Sep 2012 19:08:20 GMT</pubDate><ttl>60</ttl><item><title>Oracle错误代码一览表，方便查询！</title><link>http://www.blogjava.net/superwei/articles/385696.html</link><dc:creator>小辞猬</dc:creator><author>小辞猬</author><pubDate>Fri, 17 Aug 2012 08:01:00 GMT</pubDate><guid>http://www.blogjava.net/superwei/articles/385696.html</guid><wfw:comment>http://www.blogjava.net/superwei/comments/385696.html</wfw:comment><comments>http://www.blogjava.net/superwei/articles/385696.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/superwei/comments/commentRss/385696.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/superwei/services/trackbacks/385696.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &#8251;本文内容系转载。ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某些进程；无法转换会话 ORA-00022: 无效的会话 ID；访问被拒绝 ORA-00023: 会话引用进程私用内...&nbsp;&nbsp;<a href='http://www.blogjava.net/superwei/articles/385696.html'>阅读全文</a><img src ="http://www.blogjava.net/superwei/aggbug/385696.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/superwei/" target="_blank">小辞猬</a> 2012-08-17 16:01 <a href="http://www.blogjava.net/superwei/articles/385696.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQLServer和Oracle常用函数对比 (转载） </title><link>http://www.blogjava.net/superwei/articles/111638.html</link><dc:creator>小辞猬</dc:creator><author>小辞猬</author><pubDate>Wed, 18 Apr 2007 06:53:00 GMT</pubDate><guid>http://www.blogjava.net/superwei/articles/111638.html</guid><wfw:comment>http://www.blogjava.net/superwei/comments/111638.html</wfw:comment><comments>http://www.blogjava.net/superwei/articles/111638.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/superwei/comments/commentRss/111638.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/superwei/services/trackbacks/111638.html</trackback:ping><description><![CDATA[<table class=pageLighter cellSpacing=11 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr>
            <td class=content>
            <p>某种意义上也可以说是&nbsp;sqlserver&nbsp;和&nbsp;mysql&nbsp;的常用函数对比。</p>
            <p>数学函数</p>
            <p>　　1.绝对值&nbsp;<br>　　S:select&nbsp;abs(-1)&nbsp;value&nbsp;<br>　　O:select&nbsp;abs(-1)&nbsp;value&nbsp;from&nbsp;dual&nbsp;</p>
            <p>　　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;</p>
            <p>　　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;</p>
            <p>　　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;</p>
            <p>　　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;</p>
            <p>　　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;</p>
            <p>　　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;</p>
            <p>　　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;</p>
            <p>　　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;</p>
            <p>　　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;</p>
            <p>　　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;</p>
            <p>　　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;</p>
            <p>　　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;</p>
            <p>　　14.圆周率&nbsp;<br>　　S:SELECT&nbsp;PI()&nbsp;value&nbsp;3.1415926535897931&nbsp;<br>　　O:不知道&nbsp;</p>
            <p>　　15.sin,cos,tan&nbsp;参数都以弧度为单位&nbsp;<br>　　例如：select&nbsp;sin(PI()/2)&nbsp;value&nbsp;得到1（SQLServer）&nbsp;</p>
            <p>　　16.Asin,Acos,Atan,Atan2&nbsp;返回弧度&nbsp;</p>
            <p>　　17.弧度角度互换(SQLServer，Oracle不知道)&nbsp;<br>　　DEGREES：弧度-〉角度&nbsp;<br>　　RADIANS：角度-〉弧度&nbsp;</p>
            <p>数值间比较&nbsp;</p>
            <p>　　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;</p>
            <p>　　O:select&nbsp;greatest(1,-2,4,3)&nbsp;value&nbsp;from&nbsp;dual&nbsp;</p>
            <p>　　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;</p>
            <p>　　O:select&nbsp;least(1,-2,4,3)&nbsp;value&nbsp;from&nbsp;dual&nbsp;</p>
            <p>　　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;</p>
            <p>　　21.求字符序号&nbsp;<br>　　S:select&nbsp;ascii('a')&nbsp;value&nbsp;<br>　　O:select&nbsp;ascii('a')&nbsp;value&nbsp;from&nbsp;dual&nbsp;</p>
            <p>　　22.从序号求字符&nbsp;<br>　　S:select&nbsp;char(97)&nbsp;value&nbsp;<br>　　O:select&nbsp;chr(97)&nbsp;value&nbsp;from&nbsp;dual&nbsp;</p>
            <p>　　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;</p>
            <p>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;</p>
            <p>　　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;</p>
            <p>　　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;</p>
            <p>　　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;</p>
            <p>　　26.子串全部替换&nbsp;<br>　　S:没发现&nbsp;<br>　　O:select&nbsp;Translate('fasdbfasegas','fa','我'&nbsp;)&nbsp;value&nbsp;from&nbsp;dual&nbsp;</p>
            <p>　　27.长度&nbsp;<br>　　S:len,datalength&nbsp;<br>　　O:length&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.knowsky.com/"><u><font color=#0000ff>www.knowsky.com</font></u></a><br>　　28.大小写转换&nbsp;lower,upper&nbsp;</p>
            <p>　　29.单词首字母大写&nbsp;<br>　　S:没发现&nbsp;<br>　　O:select&nbsp;INITCAP('abcd&nbsp;dsaf&nbsp;df')&nbsp;value&nbsp;from&nbsp;dual&nbsp;</p>
            <p>　　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;</p>
            <p>　　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;</p>
            <p>　　32.删除空格&nbsp;<br>　　S:ltrim,rtrim&nbsp;<br>　　O:ltrim,rtrim,trim&nbsp;</p>
            <p>　　33.&nbsp;重复字符串&nbsp;<br>　　S:select&nbsp;REPLICATE('abcd',2)&nbsp;value&nbsp;<br>　　O:没发现&nbsp;</p>
            <p>　　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;</p>
            <p>日期函数&nbsp;<br>　　35.系统时间&nbsp;<br>　　S:select&nbsp;getdate()&nbsp;value&nbsp;<br>　　O:select&nbsp;sysdate&nbsp;value&nbsp;from&nbsp;dual&nbsp;</p>
            <p>　　36.前后几日&nbsp;<br>　　直接与整数相加减&nbsp;</p>
            <p>　　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;</p>
            <p>　　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;</p>
            <p>39.取日期时间的其他部分&nbsp;<br>　　S:DATEPART&nbsp;和&nbsp;DATENAME&nbsp;函数&nbsp;（第一个参数决定）&nbsp;<br>　　O:to_char函数&nbsp;第二个参数决定&nbsp;</p>
            <p>　　参数---------------------------------下表需要补充&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;</p>
            <p>　　40.当月最后一天&nbsp;<br>　　S:不知道&nbsp;<br>　　O:select&nbsp;LAST_DAY(sysdate)&nbsp;value&nbsp;from&nbsp;dual&nbsp;</p>
            <p>　　41.本星期的某一天（比如星期日）&nbsp;<br>　　S:不知道&nbsp;<br>　　O:SELECT&nbsp;Next_day(sysdate,7)&nbsp;vaule&nbsp;FROM&nbsp;DUAL;&nbsp;</p>
            <p>　　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;</p>
            <p>　　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;</p>
            <p>　　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;</p>
            <p>　　45.求不同时区时间&nbsp;<br>　　S:不知道&nbsp;<br>　　O:SELECT&nbsp;New_time(sysdate,'ydt','gmt'&nbsp;)&nbsp;vaule&nbsp;FROM&nbsp;DUAL;&nbsp;</p>
            <p>　　-----时区参数,北京在东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标准时间&nbsp;</p>
            </td>
        </tr>
    </tbody>
</table>
  <img src ="http://www.blogjava.net/superwei/aggbug/111638.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/superwei/" target="_blank">小辞猬</a> 2007-04-18 14:53 <a href="http://www.blogjava.net/superwei/articles/111638.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL-SERVER中CONVERT转化函数的用法 </title><link>http://www.blogjava.net/superwei/articles/111630.html</link><dc:creator>小辞猬</dc:creator><author>小辞猬</author><pubDate>Wed, 18 Apr 2007 06:37:00 GMT</pubDate><guid>http://www.blogjava.net/superwei/articles/111630.html</guid><wfw:comment>http://www.blogjava.net/superwei/comments/111630.html</wfw:comment><comments>http://www.blogjava.net/superwei/articles/111630.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/superwei/comments/commentRss/111630.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/superwei/services/trackbacks/111630.html</trackback:ping><description><![CDATA[<h2>&nbsp;</h2>
<p><font color=#003366><font size=3><font color=#ff0000><font face=黑体><strong>格式:</strong></font><br></font><strong><font face=黑体>CONVERT(data_type,expression[,style])</font></strong></font></font></p>
<p><font color=#003366><font size=3><font face=黑体 color=#ff0000><strong>说明:</strong></font><br>此样式一般在时间类型<font face=黑体>(datetime,smalldatetime)</font>与字符串类型</font><font size=3><font face=黑体>(nchar,nvarchar,char,varchar)<br></font>相互转换的时候才用到.</font></font></p>
<p><font color=#003366><font size=3><font face=黑体><strong><font color=#ff0000>例子:<br></font>SELECT CONVERT(varchar(30),getdate(),101) now</strong></font><br></font></font><font color=#003366><font size=3><font face=黑体 color=#ff0000><strong>结果为:<br></strong></font>now<br>---------------------------------------<br>|09/15/2001</font></font></p>
<p><font color=#003366 size=3>===================================================================</font></p>
<p><font face=黑体 color=#ff0000 size=3><strong>style数字在转换时间时的含义如下:</strong></font></p>
<p><font color=#003366 size=3>------------------------------------------------------------------------------------------------------------<br>Style(2位表示年份)&nbsp;&nbsp; |&nbsp; Style(4位表示年份)&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;&nbsp;&nbsp;&nbsp;&nbsp; <br>------------------------------------------------------------------------------------------------------------<br>0&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;100&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; mon dd yyyy hh:miAM(或PM)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>------------------------------------------------------------------------------------------------------------<br>1&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; 101&nbsp;&nbsp; 美国&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp; mm/dd/yy&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;&nbsp;&nbsp; <br>------------------------------------------------------------------------------------------------------------<br><font style="BACKGROUND-COLOR: #c0c0c0" color=#000080><strong>2&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; 102&nbsp;&nbsp;&nbsp;&nbsp;ANSI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp; yy-mm-dd</strong></font>&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;&nbsp;&nbsp;&nbsp; <br>------------------------------------------------------------------------------------------------------------<br>3&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; 103&nbsp;&nbsp;&nbsp;&nbsp;英法&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp; dd/mm/yy&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;&nbsp;&nbsp; <br>------------------------------------------------------------------------------------------------------------<br>4&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; 104&nbsp;&nbsp;&nbsp;&nbsp;德国&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp; dd.mm.yy&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;&nbsp;&nbsp;&nbsp; <br>------------------------------------------------------------------------------------------------------------<br><font style="BACKGROUND-COLOR: #c0c0c0" color=#000080><strong>5&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; 105&nbsp;&nbsp;&nbsp;&nbsp;意大利&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp; dd-mm-yy</strong></font>&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;&nbsp;&nbsp;&nbsp; <br>------------------------------------------------------------------------------------------------------------<br>6&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; 106&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; dd mon yy&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;&nbsp;&nbsp;&nbsp; <br>------------------------------------------------------------------------------------------------------------<br>7&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; 107&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; mon dd,yy&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;&nbsp;&nbsp;&nbsp; <br>------------------------------------------------------------------------------------------------------------<br>8&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; 108&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; hh:mm:ss&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;&nbsp;&nbsp;&nbsp;&nbsp; <br>------------------------------------------------------------------------------------------------------------<br>9&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; 109&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; mon dd yyyy hh:mi:ss:mmmmAM(或PM)<br>------------------------------------------------------------------------------------------------------------<br>10&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; 110&nbsp;&nbsp;&nbsp;&nbsp;美国&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp; mm-dd-yy&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;&nbsp;&nbsp;&nbsp;&nbsp; <br>------------------------------------------------------------------------------------------------------------<br>11&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; 111&nbsp;&nbsp;&nbsp;&nbsp;日本&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; yy/mm/dd&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;&nbsp;&nbsp;&nbsp; <br>------------------------------------------------------------------------------------------------------------<br>12&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; 112&nbsp;&nbsp;&nbsp;&nbsp;ISO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; yymmdd&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>------------------------------------------------------------------------------------------------------------<br>13&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; 113&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;欧洲默认值&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp; dd mon yyyy hh:mi:ss:mmm(24小时制)&nbsp; <br>------------------------------------------------------------------------------------------------------------<br>14&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; 114&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; hh:mi:ss:mmm(24小时制)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>------------------------------------------------------------------------------------------------------------<br><strong><font style="BACKGROUND-COLOR: #c0c0c0" color=#000080>20&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; 120&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ODBC 规范&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;yyyy-mm-dd hh:mi:ss(24小时制)</font></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>------------------------------------------------------------------------------------------------------------<br>21&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; 121&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;yyyy-mm-dd hh:mi:ss:mmm(24小时制) <br>------------------------------------------------------------------------------------------------------------</font></p>
<p class=label><font size=3><strong><font face=黑体 color=#ff0000>语句及查询结果：</font><br></strong>SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM<br>SELECT CONVERT(varchar(100), GETDATE(), 1): 05/16/06<br>SELECT CONVERT(varchar(100), GETDATE(), 2): 06.05.16<br>SELECT CONVERT(varchar(100), GETDATE(), 3): 16/05/06<br>SELECT CONVERT(varchar(100), GETDATE(), 4): 16.05.06<br>SELECT CONVERT(varchar(100), GETDATE(), 5): 16-05-06<br>SELECT CONVERT(varchar(100), GETDATE(), 6): 16 05 06<br>SELECT CONVERT(varchar(100), GETDATE(), 7): 05 16, 06<br>SELECT CONVERT(varchar(100), GETDATE(), 8): 10:57:46<br>SELECT CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM<br>SELECT CONVERT(varchar(100), GETDATE(), 10): 05-16-06<br>SELECT CONVERT(varchar(100), GETDATE(), 11): 06/05/16<br>SELECT CONVERT(varchar(100), GETDATE(), 12): 060516<br>SELECT CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937<br>SELECT CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967<br>SELECT CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47<br>SELECT CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157<br>SELECT CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM<br>SELECT CONVERT(varchar(100), GETDATE(), 23): 2006-05-16<br>SELECT CONVERT(varchar(100), GETDATE(), 24): 10:57:47<br>SELECT CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250<br>SELECT CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM<br>SELECT CONVERT(varchar(100), GETDATE(), 101): 05/16/2006<br>SELECT CONVERT(varchar(100), GETDATE(), 102): 2006.05.16<br>SELECT CONVERT(varchar(100), GETDATE(), 103): 16/05/2006<br>SELECT CONVERT(varchar(100), GETDATE(), 104): 16.05.2006<br>SELECT CONVERT(varchar(100), GETDATE(), 105): 16-05-2006<br>SELECT CONVERT(varchar(100), GETDATE(), 106): 16 05 2006<br>SELECT CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006<br>SELECT CONVERT(varchar(100), GETDATE(), 108): 10:57:49<br>SELECT CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM<br>SELECT CONVERT(varchar(100), GETDATE(), 110): 05-16-2006<br>SELECT CONVERT(varchar(100), GETDATE(), 111): 2006/05/16<br>SELECT CONVERT(varchar(100), GETDATE(), 112): 20060516<br>SELECT CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513<br>SELECT CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547<br>SELECT CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49<br>SELECT CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700<br>SELECT CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827<br>SELECT CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM<br>SELECT CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM<br><br></font><strong><font size=3><font face=黑体 color=#ff0000>说明:</font><br>使用 <font style="BACKGROUND-COLOR: #0a246a" color=#ffffff>CONVERT</font>：</font></strong></p>
<p><code><font face=新宋体><font size=3><font style="BACKGROUND-COLOR: #0a246a" color=#ffffff>CONVERT</font> <strong>( </strong><font face=黑体>data_type [ <strong>( </strong>length <strong>) </strong>] <strong>,</strong> expression [ <strong>,</strong> style ]</font> <strong>)</strong></font></font></code></p>
<h5><font size=3>参数</font></h5>
<p><font face=黑体 size=3>expression</font></p>
<p class=indent><font size=3>是任何有效的<font face=黑体> Microsoft&#174; SQL Server&#8482;</font> 表达式。。 </font></p>
<p><font face=黑体 size=3>data_type</font></p>
<p class=indent><font size=3>目标系统所提供的数据类型，包括 <strong>bigint</strong> 和 <strong>sql_variant</strong>。不能使用用户定义的数据类型。<br><font face=黑体>length</font></font></p>
<p class=indent><font size=3><strong>nchar</strong>、<strong>nvarchar</strong>、<strong>char</strong>、<strong>varchar</strong>、<strong>binary</strong> 或 <strong>varbinary</strong> 数据类型的可选参数。 </font></p>
<p><em><font size=3>style</font></em></p>
<p class=indent><font size=3>日期格式样式，借以将 datetime 或 <strong>smalldatetime</strong> 数据转换为字符数据（<strong>nchar</strong>、<strong>nvarchar</strong>、<strong>char</strong>、<strong>varchar</strong>、<strong>nchar</strong> 或 <strong>nvarchar</strong> 数据类型）；或者字符串格式样式，借以将 <strong>float</strong>、<strong>real</strong>、<strong>money</strong> 或 <strong>smallmoney</strong> 数据转换为字符数据（<strong>nchar</strong>、<strong>nvarchar</strong>、<strong>char</strong>、<strong>varchar</strong>、<strong>nchar</strong> 或 <strong>nvarchar</strong> 数据类型）。</font></p>
<p class=indent><font size=3>SQL Server 支持使用科威特算法的阿拉伯样式中的数据格式。</font></p>
<p class=indent><font size=3>在表中，左侧的两列表示将 datetime 或 <strong>smalldatetime</strong> 转换为字符数据的 <em>style</em> 值。给 <em>style</em> 值加 100，可获得包括世纪数位的四位年份 (yyyy)。</font></p>
<p>
<table cols=4 cellPadding=2 rules=all width=571 border=1 frame=box>
    <tbody>
        <tr vAlign=top>
            <th class=label width="23%">不带世纪数位 (yy)</th>
            <th class=label width="21%">带世纪数位 (yyyy)</th>
            <th class=label width="27%"><br>标准</th>
            <th class=label width="29%"><br>输入/输出**</th>
        </tr>
        <tr vAlign=top>
            <td width="23%"><font size=3>-</font></td>
            <td width="21%"><font size=3>0 或 100 (*) </font></td>
            <td width="27%"><font size=3>默认值</font></td>
            <td width="29%"><font size=3>mon dd yyyy hh:miAM（或 PM）</font></td>
        </tr>
        <tr vAlign=top>
            <td width="23%"><font size=3>1</font></td>
            <td width="21%"><font size=3>101</font></td>
            <td width="27%"><font size=3>美国</font></td>
            <td width="29%"><font size=3>mm/dd/yyyy</font></td>
        </tr>
        <tr vAlign=top>
            <td width="23%"><font size=3>2</font></td>
            <td width="21%"><font size=3>102</font></td>
            <td width="27%"><font size=3>ANSI</font></td>
            <td width="29%"><font size=3>yy.mm.dd</font></td>
        </tr>
        <tr vAlign=top>
            <td width="23%"><font size=3>3</font></td>
            <td width="21%"><font size=3>103</font></td>
            <td width="27%"><font size=3>英国/法国</font></td>
            <td width="29%"><font size=3>dd/mm/yy</font></td>
        </tr>
        <tr vAlign=top>
            <td width="23%"><font size=3>4</font></td>
            <td width="21%"><font size=3>104</font></td>
            <td width="27%"><font size=3>德国</font></td>
            <td width="29%"><font size=3>dd.mm.yy</font></td>
        </tr>
        <tr vAlign=top>
            <td width="23%"><font size=3>5</font></td>
            <td width="21%"><font size=3>105</font></td>
            <td width="27%"><font size=3>意大利</font></td>
            <td width="29%"><font size=3>dd-mm-yy</font></td>
        </tr>
        <tr vAlign=top>
            <td width="23%"><font size=3>6</font></td>
            <td width="21%"><font size=3>106</font></td>
            <td width="27%"><font size=3>-</font></td>
            <td width="29%"><font size=3>dd mon yy</font></td>
        </tr>
        <tr vAlign=top>
            <td width="23%"><font size=3>7</font></td>
            <td width="21%"><font size=3>107</font></td>
            <td width="27%"><font size=3>-</font></td>
            <td width="29%"><font size=3>mon dd, yy</font></td>
        </tr>
        <tr vAlign=top>
            <td width="23%"><font size=3>8</font></td>
            <td width="21%"><font size=3>108</font></td>
            <td width="27%"><font size=3>-</font></td>
            <td width="29%"><font size=3>hh:mm:ss</font></td>
        </tr>
        <tr vAlign=top>
            <td width="23%"><font size=3>-</font></td>
            <td width="21%"><font size=3>9 或 109 (*) </font></td>
            <td width="27%"><font size=3>默认值 + 毫秒</font></td>
            <td width="29%"><font size=3>mon dd yyyy hh:mi:ss:mmmAM（或 PM）</font></td>
        </tr>
        <tr vAlign=top>
            <td width="23%"><font size=3>10</font></td>
            <td width="21%"><font size=3>110</font></td>
            <td width="27%"><font size=3>美国</font></td>
            <td width="29%"><font size=3>mm-dd-yy</font></td>
        </tr>
        <tr vAlign=top>
            <td width="23%"><font size=3>11</font></td>
            <td width="21%"><font size=3>111</font></td>
            <td width="27%"><font size=3>日本</font></td>
            <td width="29%"><font size=3>yy/mm/dd</font></td>
        </tr>
        <tr vAlign=top>
            <td width="23%"><font size=3>12</font></td>
            <td width="21%"><font size=3>112</font></td>
            <td width="27%"><font size=3>ISO</font></td>
            <td width="29%"><font size=3>yymmdd</font></td>
        </tr>
        <tr vAlign=top>
            <td width="23%"><font size=3>-</font></td>
            <td width="21%"><font size=3>13 或 113 (*) </font></td>
            <td width="27%"><font size=3>欧洲默认值 + 毫秒</font></td>
            <td width="29%"><font size=3>dd mon yyyy hh:mm:ss:mmm(24h)</font></td>
        </tr>
        <tr vAlign=top>
            <td width="23%"><font size=3>14</font></td>
            <td width="21%"><font size=3>114</font></td>
            <td width="27%"><font size=3>-</font></td>
            <td width="29%"><font size=3>hh:mi:ss:mmm(24h)</font></td>
        </tr>
        <tr vAlign=top>
            <td width="23%"><font size=3>-</font></td>
            <td width="21%"><font size=3>20 或 120 (*) </font></td>
            <td width="27%"><font size=3>ODBC 规范</font></td>
            <td width="29%"><font size=3><em>yyyy</em>-<em>mm-dd hh</em>:<em>mm</em>:<em>ss</em>[.<em>fff</em>]</font></td>
        </tr>
        <tr vAlign=top>
            <td width="23%"><font size=3>-</font></td>
            <td width="21%"><font size=3>21 或 121 (*) </font></td>
            <td width="27%"><font size=3>ODBC 规范（带毫秒）</font></td>
            <td width="29%"><font size=3><em>yyyy</em>-<em>mm-dd hh</em>:<em>mm</em>:<em>ss</em>[.<em>fff</em>]</font></td>
        </tr>
        <tr vAlign=top>
            <td width="23%"><font size=3>-</font></td>
            <td width="21%"><font size=3>126(***)</font></td>
            <td width="27%"><font size=3>ISO8601</font></td>
            <td width="29%"><font size=3>yyyy-mm-dd Thh:mm:ss.mmm（不含空格）</font></td>
        </tr>
        <tr vAlign=top>
            <td width="23%"><font size=3>-</font></td>
            <td width="21%"><font size=3>130*</font></td>
            <td width="27%"><font size=3>Hijri****</font></td>
            <td width="29%"><font size=3>dd mon yyyy hh:mi:ss:mmmAM</font></td>
        </tr>
        <tr vAlign=top>
            <td width="23%"><font size=3>-</font></td>
            <td width="21%"><font size=3>131*</font></td>
            <td width="27%"><font size=3>Hijri****</font></td>
            <td width="29%"><font size=3>dd/mm/yy hh:mi:ss:mmmAM</font></td>
        </tr>
    </tbody>
</table>
<br></p>
<p class=mini><font size=3>*&nbsp;&nbsp;&nbsp;&nbsp;默认值（style 0 或 100、9 或 109、13 或 113、20 或 120、21 或 121）始终返回世纪数位 (yyyy)。<br>** 当转换为 datetime时输入；当转换为字符数据时输出。<br>*** 专门用于 XML。对于从 datetime或 <strong>smalldatetime</strong> 到 <strong>character</strong> 数据的转换，输出格式如表中所示。对于从 <strong>float</strong>、<strong>money</strong> 或 <strong>smallmoney</strong> 到 <strong>character</strong> 数据的转换，输出等同于 <em>style</em> 2。对于从 <strong>real</strong> 到 <strong>character</strong> 数据的转换，输出等同于 <em>style</em> 1。<br>****Hijri 是具有几种变化形式的日历系统，Microsoft&#174; SQL Server&#8482; 2000 使用其中的科威特算法。</font></p>
<p class=level2><font size=3></font></p>
<p><font size=3><img style="MARGIN-LEFT: 0em" height=11 src="mk:@MSITStore:C:/Program%20Files/Microsoft%20SQL%20Server/80/Tools/Books/tsqlref.chm::/Basics/important.gif" width=12 border=0><font face=黑体 color=#ff0000>&nbsp;</font></font><font size=3><strong class=notes><font face=黑体 color=#ff0000>重要</font></strong>&nbsp;&nbsp;默认情况下，SQL Server 根据截止年份 2049 解释两位数字的年份。即，两位数字的年份 49 被解释为 2049，而两位数字的年份 50 被解释为 1950。许多客户端应用程序（例如那些基于 OLE 自动化对象的客户端应用程序）都使用 2030 作为截止年份。SQL Server 提供一个配置选项（"两位数字的截止年份"），借以更改 SQL Server 所使用的截止年份并对日期进行一致性处理。然而最安全的办法是指定四位数字年份。</font></p>
<p><font size=3></font></p>
<p class=indent><font size=3>当从 <strong>smalldatetime</strong> 转换为字符数据时，包含秒或毫秒的样式将在这些位置上显示零。当从 datetime 或 <strong>smalldatetime</strong> 值进行转换时，可以通过使用适当的 <strong>char</strong> 或 <strong>varchar</strong> 数据类型长度来截断不需要的日期部分。</font></p>
<img src ="http://www.blogjava.net/superwei/aggbug/111630.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/superwei/" target="_blank">小辞猬</a> 2007-04-18 14:37 <a href="http://www.blogjava.net/superwei/articles/111630.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle函数大全</title><link>http://www.blogjava.net/superwei/articles/99622.html</link><dc:creator>小辞猬</dc:creator><author>小辞猬</author><pubDate>Tue, 13 Feb 2007 02:46:00 GMT</pubDate><guid>http://www.blogjava.net/superwei/articles/99622.html</guid><wfw:comment>http://www.blogjava.net/superwei/comments/99622.html</wfw:comment><comments>http://www.blogjava.net/superwei/articles/99622.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/superwei/comments/commentRss/99622.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/superwei/services/trackbacks/99622.html</trackback:ping><description><![CDATA[
		<p align="left">SQL中的单记录函数 <br />1.ASCII <br />返回与指定的字符对应的十进制数; <br />SQL&gt; select ascii(’A’) A,ascii(’a’) a,ascii(’0’) zero,ascii(’ ’) space from dual; <br />A A ZERO SPACE <br />--------- --------- --------- --------- <br />65 97 48 32 </p>
		<p>2.CHR <br />给出整数,返回对应的字符; <br />SQL&gt; select chr(54740) zhao,chr(65) chr65 from dual; <br />ZH C <br />-- - <br />赵 A <br />3.CONCAT <br />连接两个字符串; <br />SQL&gt; select concat(’010-’,’88888888’)||’转23’ 高乾竞电话 from dual; <br />高乾竞电话 <br />---------------- <br />010-88888888转23 <br />4.INITCAP <br />返回字符串并将字符串的第一个字母变为大写; <br />SQL&gt; select initcap(’smith’) upp from dual; <br />UPP <br />----- <br />Smith </p>
		<p>5.INSTR(C1,C2,I,J) <br />在一个字符串中搜索指定的字符,返回发现指定的字符的位置; <br />C1 被搜索的字符串 <br />C2 希望搜索的字符串 <br />I 搜索的开始位置,默认为1 <br />J 出现的位置,默认为1 <br />SQL&gt; select instr(’oracle traning’,’ra’,1,2) instring from dual; <br />INSTRING <br />--------- <br />9 </p>
		<p>6.LENGTH <br />返回字符串的长度; <br />SQL&gt; select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst; <br />NAME LENGTH(NAME) ADDR LENGTH(ADDR) SAL LENGTH(TO_CHAR(SAL)) <br />------ ------------ ---------------- ------------ --------- -------------------- <br />高乾竞 3 北京市海锭区 6 9999.99 7 <br /><br />7.LOWER <br />返回字符串,并将所有的字符小写 <br />SQL&gt; select lower(’AaBbCcDd’)AaBbCcDd from dual; <br />AABBCCDD <br />-------- <br />aabbccdd </p>
		<p>8.UPPER <br />返回字符串,并将所有的字符大写 <br />SQL&gt; select upper(’AaBbCcDd’) upper from dual; <br />UPPER <br />-------- <br />AABBCCDD <br /><br />9.RPAD和LPAD(粘贴字符) <br />RPAD 在列的右边粘贴字符 <br />LPAD 在列的左边粘贴字符 <br />SQL&gt; select lpad(rpad(’gao’,10,’*’),17,’*’)from dual; <br />LPAD(RPAD(’GAO’,1 <br />----------------- <br />*******gao******* <br />不够字符则用*来填满 </p>
		<p>10.LTRIM和RTRIM <br />LTRIM 删除左边出现的字符串 <br />RTRIM 删除右边出现的字符串 <br />SQL&gt; select ltrim(rtrim(’ gao qian jing ’,’ ’),’ ’) from dual; <br />LTRIM(RTRIM(’ <br />------------- <br />gao qian jing </p>
		<p>11.SUBSTR(string,start,count) <br />取子字符串,从start开始,取count个 <br />SQL&gt; select substr(’13088888888’,3,8) from dual; <br />SUBSTR(’ <br />-------- <br />08888888 </p>
		<p>12.REPLACE(’string’,’s1’,’s2’) <br />string 希望被替换的字符或变量 <br />s1 被替换的字符串 <br />s2 要替换的字符串 <br />SQL&gt; select replace(’he love you’,’he’,’i’) from dual; <br />REPLACE(’H <br />---------- <br />i love you </p>
		<p>13.SOUNDEX <br />返回一个与给定的字符串读音相同的字符串 <br />SQL&gt; create table table1(xm varchar(8)); <br />SQL&gt; insert into table1 values(’weather’); <br />SQL&gt; insert into table1 values(’wether’); <br />SQL&gt; insert into table1 values(’gao’); <br />SQL&gt; select xm from table1 where soundex(xm)=soundex(’weather’); <br />XM <br />-------- <br />weather <br />wether </p>
		<p>14.TRIM(’s’ from ’string’) <br />LEADING 剪掉前面的字符 <br />TRAILING 剪掉后面的字符 <br />如果不指定,默认为空格符 <br />15.ABS <br />返回指定值的绝对值 <br />SQL&gt; select abs(100),abs(-100) from dual; <br />ABS(100) ABS(-100) <br />--------- --------- <br />100 100 </p>
		<p>16.ACOS <br />给出反余弦的值 <br />SQL&gt; select acos(-1) from dual; <br />ACOS(-1) <br />--------- <br />3.1415927 </p>
		<p>17.ASIN <br />给出反正弦的值 <br />SQL&gt; select asin(0.5) from dual; <br />ASIN(0.5) <br />--------- <br />.52359878 </p>
		<p>18.ATAN <br />返回一个数字的反正切值 <br />SQL&gt; select atan(1) from dual; <br />ATAN(1) <br />--------- <br />.78539816 </p>
		<p>19.CEIL <br />返回大于或等于给出数字的最小整数 <br />SQL&gt; select ceil(3.1415927) from dual; <br />CEIL(3.1415927) <br />--------------- <br />4 </p>
		<p>20.COS <br />返回一个给定数字的余弦 <br />SQL&gt; select cos(-3.1415927) from dual; <br />COS(-3.1415927) <br />--------------- <br />-1<br />21.COSH <br />返回一个数字反余弦值 <br />SQL&gt; select cosh(20) from dual; <br />COSH(20) <br />--------- <br />242582598 </p>
		<p>22.EXP <br />返回一个数字e的n次方根 <br />SQL&gt; select exp(2),exp(1) from dual; <br />EXP(2) EXP(1) <br />--------- --------- <br />7.3890561 2.7182818 </p>
		<p>23.FLOOR <br />对给定的数字取整数 <br />SQL&gt; select floor(2345.67) from dual; <br />FLOOR(2345.67) <br />-------------- <br />2345 </p>
		<p>24.LN <br />返回一个数字的对数值 <br />SQL&gt; select ln(1),ln(2),ln(2.7182818) from dual; <br />LN(1) LN(2) LN(2.7182818) <br />--------- --------- ------------- <br />0 .69314718 .99999999 </p>
		<p>25.LOG(n1,n2) <br />返回一个以n1为底n2的对数 <br />SQL&gt; select log(2,1),log(2,4) from dual; <br />LOG(2,1) LOG(2,4) <br />--------- --------- <br />0 2 </p>
		<p>26.MOD(n1,n2) <br />返回一个n1除以n2的余数 <br />SQL&gt; select mod(10,3),mod(3,3),mod(2,3) from dual; <br />MOD(10,3) MOD(3,3) MOD(2,3) <br />--------- --------- --------- <br />1 0 2 </p>
		<p>27.POWER <br />返回n1的n2次方根 <br />SQL&gt; select power(2,10),power(3,3) from dual; <br />POWER(2,10) POWER(3,3) <br />----------- ---------- <br />1024 27 </p>
		<p>28.ROUND和TRUNC <br />按照指定的精度进行舍入 <br />SQL&gt; select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual; <br />ROUND(55.5) ROUND(-55.4) TRUNC(55.5) TRUNC(-55.5) <br />----------- ------------ ----------- ------------ <br />56 -55 55 -55 </p>
		<p>29.SIGN <br />取数字n的符号,大于0返回1,小于0返回-1,等于0返回0 <br />SQL&gt; select sign(123),sign(-100),sign(0) from dual; <br />SIGN(123) SIGN(-100) SIGN(0) <br />--------- ---------- --------- <br />1 -1 0 </p>
		<p>30.SIN <br />返回一个数字的正弦值 <br />SQL&gt; select sin(1.57079) from dual; <br />SIN(1.57079) <br />------------ <br />1 </p>
		<p>31.SIGH <br />返回双曲正弦的值 <br />SQL&gt; select sin(20),sinh(20) from dual; <br />SIN(20) SINH(20) <br />--------- --------- <br />.91294525 242582598 </p>
		<p>32.SQRT <br />返回数字n的根 <br />SQL&gt; select sqrt(64),sqrt(10) from dual; <br />SQRT(64) SQRT(10) <br />--------- --------- <br />8 3.1622777 </p>
		<p>33.TAN <br />返回数字的正切值 <br />SQL&gt; select tan(20),tan(10) from dual; <br />TAN(20) TAN(10) <br />--------- --------- <br />2.2371609 .64836083 </p>
		<p>34.TANH <br />返回数字n的双曲正切值 <br />SQL&gt; select tanh(20),tan(20) from dual; <br />TANH(20) TAN(20) <br />--------- --------- <br />1 2.2371609 </p>
		<p>35.TRUNC <br />按照指定的精度截取一个数 <br />SQL&gt; select trunc(124.1666,-2) trunc1,trunc(124.16666,2) from dual; <br />TRUNC1 TRUNC(124.16666,2) <br />--------- ------------------ <br />100 124.16 </p>
		<p>36.ADD_MONTHS <br />增加或减去月份 <br />SQL&gt; select to_char(add_months(to_date(’199912’,’yyyymm’),2),’yyyymm’) from dual; <br />TO_CHA <br />------ <br />200002 <br />SQL&gt; select to_char(add_months(to_date(’199912’,’yyyymm’),-2),’yyyymm’) from dual; <br />TO_CHA <br />------ <br />199910 </p>
		<p>37.LAST_DAY <br />返回日期的最后一天 <br />SQL&gt; select to_char(sysdate,’yyyy.mm.dd’),to_char((sysdate)+1,’yyyy.mm.dd’) from dual; <br />TO_CHAR(SY TO_CHAR((S <br />---------- ---------- <br />2004.05.09 2004.05.10 <br />SQL&gt; select last_day(sysdate) from dual; <br />LAST_DAY(S <br />---------- <br />31-5月 -04 </p>
		<p>38.MONTHS_BETWEEN(date2,date1) <br />给出date2-date1的月份 <br />SQL&gt; select months_between(’19-12月-1999’,’19-3月-1999’) mon_between from dual; <br />MON_BETWEEN <br />----------- <br />9 <br />SQL&gt;selectmonths_between(to_date(’2000.05.20’,’yyyy.mm.dd’),to_date(’2005.05.20’,’yyyy.mm.dd’)) mon_betw from dual; <br />MON_BETW <br />--------- <br />-60 </p>
		<p>39.NEW_TIME(date,’this’,’that’) <br />给出在this时区=other时区的日期和时间 <br />SQL&gt; select to_char(sysdate,’yyyy.mm.dd hh24:mi:ss’) bj_time,to_char(new_time <br />2 (sysdate,’PDT’,’GMT’),’yyyy.mm.dd hh24:mi:ss’) los_angles from dual; <br />BJ_TIME LOS_ANGLES <br />------------------- ------------------- <br />2004.05.09 11:05:32 2004.05.09 18:05:32 </p>
		<p>40.NEXT_DAY(date,’day’) <br />给出日期date和星期x之后计算下一个星期的日期 <br />SQL&gt; select next_day(’18-5月-2001’,’星期五’) next_day from dual; <br />NEXT_DAY <br />---------- <br />25-5月 -01<br />41.SYSDATE <br />用来得到系统的当前日期 <br />SQL&gt; select to_char(sysdate,’dd-mm-yyyy day’) from dual; <br />TO_CHAR(SYSDATE,’ <br />----------------- <br />09-05-2004 星期日 <br />trunc(date,fmt)按照给出的要求将日期截断,如果fmt=’mi’表示保留分,截断秒 <br />SQL&gt; select to_char(trunc(sysdate,’hh’),’yyyy.mm.dd hh24:mi:ss’) hh, <br />2 to_char(trunc(sysdate,’mi’),’yyyy.mm.dd hh24:mi:ss’) hhmm from dual; <br />HH HHMM <br />------------------- ------------------- <br />2004.05.09 11:00:00 2004.05.09 11:17:00 </p>
		<p>42.CHARTOROWID <br />将字符数据类型转换为ROWID类型 <br />SQL&gt; select rowid,rowidtochar(rowid),ename from scott.emp; <br />ROWID ROWIDTOCHAR(ROWID) ENAME <br />------------------ ------------------ ---------- <br />AAAAfKAACAAAAEqAAA AAAAfKAACAAAAEqAAA SMITH <br />AAAAfKAACAAAAEqAAB AAAAfKAACAAAAEqAAB ALLEN <br />AAAAfKAACAAAAEqAAC AAAAfKAACAAAAEqAAC WARD <br />AAAAfKAACAAAAEqAAD AAAAfKAACAAAAEqAAD JONES </p>
		<p>43.CONVERT(c,dset,sset) <br />将源字符串 sset从一个语言字符集转换到另一个目的dset字符集 <br />SQL&gt; select convert(’strutz’,’we8hp’,’f7dec’) "conversion" from dual; <br />conver <br />------ <br />strutz </p>
		<p>44.HEXTORAW <br />将一个十六进制构成的字符串转换为二进制 </p>
		<p>45.RAWTOHEXT <br />将一个二进制构成的字符串转换为十六进制 </p>
		<p>46.ROWIDTOCHAR <br />将ROWID数据类型转换为字符类型 </p>
		<p>47.TO_CHAR(date,’format’) <br />SQL&gt; select to_char(sysdate,’yyyy/mm/dd hh24:mi:ss’) from dual; <br />TO_CHAR(SYSDATE,’YY <br />------------------- <br />2004/05/09 21:14:41 </p>
		<p>48.TO_DATE(string,’format’) <br />将字符串转化为ORACLE中的一个日期 </p>
		<p>49.TO_MULTI_BYTE <br />将字符串中的单字节字符转化为多字节字符 <br />SQL&gt; select to_multi_byte(’高’) from dual; <br />TO <br />-- <br />高 </p>
		<p>50.TO_NUMBER <br />将给出的字符转换为数字 <br />SQL&gt; select to_number(’1999’) year from dual; <br />YEAR <br />--------- <br />1999 </p>
		<p>51.BFILENAME(dir,file) <br />指定一个外部二进制文件 <br />SQL&gt;insert into file_tb1 values(bfilename(’lob_dir1’,’image1.gif’)); </p>
		<p>52.CONVERT(’x’,’desc’,’source’) <br />将x字段或变量的源source转换为desc <br />SQL&gt; select sid,serial#,username,decode(command, <br />2 0,’none’, <br />3 2,’insert’, <br />4 3, <br />5 ’select’, <br />6 6,’update’, <br />7 7,’delete’, <br />8 8,’drop’, <br />9 ’other’) cmd from v$session where type!=’background’; <br />SID SERIAL# USERNAME CMD <br />--------- --------- ------------------------------ ------ <br />1 1 none <br />2 1 none <br />3 1 none <br />4 1 none <br />5 1 none <br />6 1 none <br />7 1275 none <br />8 1275 none <br />9 20 GAO select <br />10 40 GAO none </p>
		<p>53.DUMP(s,fmt,start,length) <br />DUMP函数以fmt指定的内部数字格式返回一个VARCHAR2类型的值 <br />SQL&gt; col global_name for a30 <br />SQL&gt; col dump_string for a50 <br />SQL&gt; set lin 200 <br />SQL&gt; select global_name,dump(global_name,1017,8,5) dump_string from global_name; <br />GLOBAL_NAME DUMP_STRING <br />------------------------------ -------------------------------------------------- <br />ORACLE.WORLD Typ=1 Len=12 CharacterSet=ZHS16GBK: W,O,R,L,D </p>
		<p>54.EMPTY_BLOB()和EMPTY_CLOB() <br />这两个函数都是用来对大数据类型字段进行初始化操作的函数 </p>
		<p>55.GREATEST <br />返回一组表达式中的最大值,即比较字符的编码大小. <br />SQL&gt; select greatest(’AA’,’AB’,’AC’) from dual; <br />GR <br />-- <br />AC <br />SQL&gt; select greatest(’啊’,’安’,’天’) from dual; <br />GR <br />-- <br />天 </p>
		<p>56.LEAST <br />返回一组表达式中的最小值 <br />SQL&gt; select least(’啊’,’安’,’天’) from dual; <br />LE <br />-- <br />啊 </p>
		<p>57.UID <br />返回标识当前用户的唯一整数 <br />SQL&gt; show user <br />USER 为"GAO" <br />SQL&gt; select username,user_id from dba_users where user_id=uid; <br />USERNAME USER_ID <br />------------------------------ --------- <br />GAO 25 </p>
		<p>58.USER <br />返回当前用户的名字 <br />SQL&gt; select user from dual; <br />USER <br />------------------------------ <br />GAO </p>
		<p>59.USEREVN <br />返回当前用户环境的信息,opt可以是: <br />ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE <br />ISDBA 查看当前用户是否是DBA如果是则返回true <br />SQL&gt; select userenv(’isdba’) from dual; <br />USEREN <br />------ <br />FALSE <br />SQL&gt; select userenv(’isdba’) from dual; <br />USEREN <br />------ <br />TRUE <br />SESSION <br />返回会话标志 <br />SQL&gt; select userenv(’sessionid’) from dual; <br />USERENV(’SESSIONID’) <br />-------------------- <br />152 <br />ENTRYID <br />返回会话人口标志 <br />SQL&gt; select userenv(’entryid’) from dual; <br />USERENV(’ENTRYID’) <br />------------------ <br />0 <br />INSTANCE <br />返回当前INSTANCE的标志 <br />SQL&gt; select userenv(’instance’) from dual; <br />USERENV(’INSTANCE’) <br />------------------- <br />1 <br />LANGUAGE <br />返回当前环境变量 <br />SQL&gt; select userenv(’language’) from dual; <br />USERENV(’LANGUAGE’) <br />---------------------------------------------------- <br />SIMPLIFIED CHINESE_CHINA.ZHS16GBK <br />LANG <br />返回当前环境的语言的缩写 <br />SQL&gt; select userenv(’lang’) from dual; <br />USERENV(’LANG’) <br />---------------------------------------------------- <br />ZHS <br />TERMINAL <br />返回用户的终端或机器的标志 <br />SQL&gt; select userenv(’terminal’) from dual; <br />USERENV(’TERMINA <br />---------------- <br />GAO <br />VSIZE(X) <br />返回X的大小(字节)数 <br />SQL&gt; select vsize(user),user from dual; <br />VSIZE(USER) USER <br />----------- ------------------------------ <br />6 SYSTEM<br />60.AVG(DISTINCT|ALL) <br />all表示对所有的值求平均值,distinct只对不同的值求平均值 <br />SQLWKS&gt; create table table3(xm varchar(8),sal number(7,2)); <br />语句已处理。 <br />SQLWKS&gt; insert into table3 values(’gao’,1111.11); <br />SQLWKS&gt; insert into table3 values(’gao’,1111.11); <br />SQLWKS&gt; insert into table3 values(’zhu’,5555.55); <br />SQLWKS&gt; commit; <br />SQL&gt; select avg(distinct sal) from gao.table3; <br />AVG(DISTINCTSAL) <br />---------------- <br />3333.33 <br />SQL&gt; select avg(all sal) from gao.table3; <br />AVG(ALLSAL) <br />----------- <br />2592.59 </p>
		<p>61.MAX(DISTINCT|ALL) <br />求最大值,ALL表示对所有的值求最大值,DISTINCT表示对不同的值求最大值,相同的只取一次 <br />SQL&gt; select max(distinct sal) from scott.emp; <br />MAX(DISTINCTSAL) <br />---------------- <br />5000 </p>
		<p>62.MIN(DISTINCT|ALL) <br />求最小值,ALL表示对所有的值求最小值,DISTINCT表示对不同的值求最小值,相同的只取一次 <br />SQL&gt; select min(all sal) from gao.table3; <br />MIN(ALLSAL) <br />----------- <br />1111.11 </p>
		<p>63.STDDEV(distinct|all) <br />求标准差,ALL表示对所有的值求标准差,DISTINCT表示只对不同的值求标准差 <br />SQL&gt; select stddev(sal) from scott.emp; <br />STDDEV(SAL) <br />----------- <br />1182.5032 <br />SQL&gt; select stddev(distinct sal) from scott.emp; <br />STDDEV(DISTINCTSAL) <br />------------------- <br />1229.951 </p>
		<p>64.VARIANCE(DISTINCT|ALL) <br />求协方差 <br />SQL&gt; select variance(sal) from scott.emp; <br />VARIANCE(SAL) <br />------------- <br />1398313.9 </p>
		<p>65.GROUP BY <br />主要用来对一组数进行统计 <br />SQL&gt; select deptno,count(*),sum(sal) from scott.emp group by deptno; <br />DEPTNO COUNT(*) SUM(SAL) <br />--------- --------- --------- <br />10 3 8750 <br />20 5 10875 <br />30 6 9400 </p>
		<p>66.HAVING <br />对分组统计再加限制条件 <br />SQL&gt; select deptno,count(*),sum(sal) from scott.emp group by deptno having count(*)&gt;=5; <br />DEPTNO COUNT(*) SUM(SAL) <br />--------- --------- --------- <br />20 5 10875 <br />30 6 9400 <br />SQL&gt; select deptno,count(*),sum(sal) from scott.emp having count(*)&gt;=5 group by deptno ; <br />DEPTNO COUNT(*) SUM(SAL) <br />--------- --------- --------- <br />20 5 10875 <br />30 6 9400 </p>
		<p>67.ORDER BY <br />用于对查询到的结果进行排序输出 <br />SQL&gt; select deptno,ename,sal from scott.emp order by deptno,sal desc; <br />DEPTNO ENAME SAL <br />--------- ---------- --------- <br />10 KING 5000 <br />10 CLARK 2450 <br />10 MILLER 1300 <br />20 SCOTT 3000 <br />20 FORD 3000 <br />20 JONES 2975 <br />20 ADAMS 1100 <br />20 SMITH 800 <br />30 BLAKE 2850 <br />30 ALLEN 1600 <br />30 TURNER 1500 <br />30 WARD 1250 <br />30 MARTIN 1250 <br />30 JAMES 950</p>
<img src ="http://www.blogjava.net/superwei/aggbug/99622.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/superwei/" target="_blank">小辞猬</a> 2007-02-13 10:46 <a href="http://www.blogjava.net/superwei/articles/99622.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL Server 的 sql常用语句速查手册 </title><link>http://www.blogjava.net/superwei/articles/98994.html</link><dc:creator>小辞猬</dc:creator><author>小辞猬</author><pubDate>Fri, 09 Feb 2007 05:29:00 GMT</pubDate><guid>http://www.blogjava.net/superwei/articles/98994.html</guid><wfw:comment>http://www.blogjava.net/superwei/comments/98994.html</wfw:comment><comments>http://www.blogjava.net/superwei/articles/98994.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/superwei/comments/commentRss/98994.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/superwei/services/trackbacks/98994.html</trackback:ping><description><![CDATA[
		<table style="TABLE-LAYOUT: fixed" cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
				<tbody>
						<tr>
								<td>
										<span class="oblog_text">
												<p>SQL语句先前写的时候，很容易把一些特殊的用法忘记，特此整理了一下SQL语句操作，方便写SQL时方便一点！</p>
												<p>
														<br />一、基础</p>
												<p>1、说明：创建数据库<br />CREATE DATABASE database-name <br />2、说明：删除数据库<br />drop database dbname<br />3、说明：备份sql server<br />--- 创建 备份数据的 device<br />USE master<br />EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'<br />--- 开始 备份<br />BACKUP DATABASE pubs TO testBack <br />4、说明：创建新表<br />create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)<br />根据已有的表创建新表： <br />A：create table tab_new like tab_old (使用旧表创建新表)<br />B：create table tab_new as select col1,col2… from tab_old definition only<br />5、说明：删除新表<br />drop table tabname <br />6、说明：增加一个列<br />Alter table tabname add column col type<br />注：列增加后将不能删除。DB2中列加上后数据类型也不能改变，唯一能改变的是增加varchar类型的长度。<br />7、说明：添加主键： Alter table tabname add primary key(col) <br />说明：删除主键： Alter table tabname drop primary key(col) <br />8、说明：创建索引：create [unique] index idxname on tabname(col….) <br />删除索引：drop index idxname<br />注：索引是不可更改的，想更改必须删除重新建。<br />9、说明：创建视图：create view viewname as select statement <br />删除视图：drop view viewname<br />10、说明：几个简单的基本的sql语句<br />选择：select * from table1 where 范围<br />插入：insert into table1(field1,field2) values(value1,value2)<br />删除：delete from table1 where 范围<br />更新：update table1 set field1=value1 where 范围<br />查找：select * from table1 where field1 like ’%value1%’ ---like的语法很精妙，查资料!<br />排序：select * from table1 order by field1,field2 [desc]<br />总数：select count as totalcount from table1<br />求和：select sum(field1) as sumvalue from table1<br />平均：select avg(field1) as avgvalue from table1<br />最大：select max(field1) as maxvalue from table1<br />最小：select min(field1) as minvalue from table1<br />11、说明：几个高级查询运算词<br />A： UNION 运算符 <br />UNION 运算符通过组合其他两个结果表（例如 TABLE1 和 TABLE2）并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时（即 UNION ALL），不消除重复行。两种情况下，派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 <br />B： EXCEPT 运算符 <br />EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL)，不消除重复行。 <br />C： INTERSECT 运算符<br />INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL)，不消除重复行。 <br />注：使用运算词的几个查询结果行必须是一致的。 <br />12、说明：使用外连接 <br />A、left outer join： <br />左外连接（左连接）：结果集几包括连接表的匹配行，也包括左连接表的所有行。 <br />SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c<br />B：right outer join: <br />右外连接(右连接)：结果集既包括连接表的匹配连接行，也包括右连接表的所有行。 <br />C：full outer join： <br />全外连接：不仅包括符号连接表的匹配行，还包括两个连接表中的所有记录。</p>
												<p>二、提升</p>
												<p>1、说明：复制表(只复制结构,源表名：a 新表名：b) (Access可用)<br />法一：select * into b from a where 1&lt;&gt;1<br />法二：select top 0 * into b from a <br />2、说明：拷贝表(拷贝数据,源表名：a 目标表名：b) (Access可用)<br />insert into b(a, b, c) select d,e,f from b;</p>
												<p>3、说明：跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)<br />insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件<br />例子：..from b in '"&amp;Server.MapPath(".")&amp;"\data.mdb" &amp;"' where..</p>
												<p>4、说明：子查询(表名1：a 表名2：b)<br />select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)</p>
												<p>5、说明：显示文章、提交人和最后回复时间<br />select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b</p>
												<p>6、说明：外连接查询(表名1：a 表名2：b)<br />select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c</p>
												<p>7、说明：在线视图查询(表名1：a )<br />select * from (SELECT a,b,c FROM a) T where t.a &gt; 1;</p>
												<p>8、说明：between的用法,between限制查询数据范围时包括了边界值,not between不包括<br />select * from table1 where time between time1 and time2<br />select a,b,c, from table1 where a not between 数值1 and 数值2</p>
												<p>9、说明：in 的使用方法<br />select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)</p>
												<p>10、说明：两张关联表，删除主表中已经在副表中没有的信息 <br />delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )</p>
												<p>11、说明：四表联查问题：<br />select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....</p>
												<p>12、说明：日程安排提前五分钟提醒 <br />SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())&gt;5</p>
												<p>13、说明：一条sql 语句搞定数据库分页<br />select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段</p>
												<p>14、说明：前10条记录<br />select top 10 * form table1 where 范围</p>
												<p>15、说明：选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)<br />select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)</p>
												<p>16、说明：包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表<br />(select a from tableA ) except (select a from tableB) except (select a from tableC)</p>
												<p>17、说明：随机取出10条数据<br />select top 10 * from tablename order by newid()</p>
												<p>18、说明：随机选择记录<br />select newid()</p>
												<p>19、说明：删除重复记录<br />Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)</p>
												<p>20、说明：列出数据库里所有的表名<br />select name from sysobjects where type='U' </p>
												<p>21、说明：列出表里的所有的<br />select name from syscolumns where id=object_id('TableName')</p>
												<p>22、说明：列示type、vender、pcs字段，以type字段排列，case可以方便地实现多重选择，类似select 中的case。<br />select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type<br />显示结果：<br />type vender pcs<br />电脑 A 1<br />电脑 A 1<br />光盘 B 2<br />光盘 A 2<br />手机 B 3<br />手机 C 3</p>
												<p>23、说明：初始化表table1</p>
												<p>TRUNCATE TABLE table1</p>
												<p>24、说明：选择从10到15的记录<br />select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc</p>
												<p>三、技巧</p>
												<p>1、1=1，1=2的使用，在SQL语句组合时用的较多</p>
												<p>“where 1=1” 是表示选择全部   “where 1=2”全部不选，<br />如：<br />if @strWhere !='' <br />begin<br />set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere <br />end<br />else <br />begin<br />set @strSQL = 'select count(*) as Total from [' + @tblName + ']' <br />end </p>
												<p>我们可以直接写成<br />set @strSQL = 'select count(*) as Total from [' + @tblName + '] where 1=1 安定 '+ @strWhere </p>
												<p>2、收缩数据库<br />--重建索引<br />DBCC REINDEX<br />DBCC INDEXDEFRAG<br />--收缩数据和日志<br />DBCC SHRINKDB<br />DBCC SHRINKFILE</p>
												<p>3、压缩数据库<br />dbcc shrinkdatabase(dbname)</p>
												<p>4、转移数据库给新用户以已存在用户权限<br />exec sp_change_users_login 'update_one','newname','oldname'<br />go</p>
												<p>5、检查备份集<br />RESTORE VERIFYONLY from disk='E:\dvbbs.bak'</p>
												<p>6、修复数据库<br />ALTER DATABASE [dvbbs] SET SINGLE_USER<br />GO<br />DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK<br />GO<br />ALTER DATABASE [dvbbs] SET MULTI_USER<br />GO</p>
												<p>7、日志清除<br />SET NOCOUNT ON<br />DECLARE @LogicalFileName sysname,<br />        @MaxMinutes INT,<br />        @NewSize INT</p>
												<p>
														<br />USE     tablename             -- 要操作的数据库名<br />SELECT  @LogicalFileName = 'tablename_log',  -- 日志文件名<br />@MaxMinutes = 10,               -- Limit on time allowed to wrap log.<br />        @NewSize = 1                  -- 你想设定的日志文件的大小(M)</p>
												<p>-- Setup / initialize<br />DECLARE @OriginalSize int<br />SELECT @OriginalSize = size <br />  FROM sysfiles<br />  WHERE name = @LogicalFileName<br />SELECT 'Original Size of ' + db_name() + ' LOG is ' + <br />        CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' + <br />        CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'<br />  FROM sysfiles<br />  WHERE name = @LogicalFileName<br />CREATE TABLE DummyTrans<br />  (DummyColumn char (8000) not null)</p>
												<p>
														<br />DECLARE @Counter   INT,<br />        @StartTime DATETIME,<br />        @TruncLog  VARCHAR(255)<br />SELECT  @StartTime = GETDATE(),<br />        @TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'</p>
												<p>DBCC SHRINKFILE (@LogicalFileName, @NewSize)<br />EXEC (@TruncLog)<br />-- Wrap the log if necessary.<br />WHILE     @MaxMinutes &gt; DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired<br />      AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)  <br />      AND (@OriginalSize * 8 /1024) &gt; @NewSize  <br />  BEGIN -- Outer loop.<br />    SELECT @Counter = 0<br />    WHILE  ((@Counter &lt; @OriginalSize / 16) AND (@Counter &lt; 50000))<br />      BEGIN -- update<br />        INSERT DummyTrans VALUES ('Fill Log')  <br />        DELETE DummyTrans<br />        SELECT @Counter = @Counter + 1<br />      END   <br />    EXEC (@TruncLog)  <br />  END   <br />SELECT 'Final Size of ' + db_name() + ' LOG is ' +<br />        CONVERT(VARCHAR(30),size) + ' 8K pages or ' + <br />        CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'<br />  FROM sysfiles <br />  WHERE name = @LogicalFileName<br />DROP TABLE DummyTrans<br />SET NOCOUNT OFF </p>
												<p>8、说明：更改某个表<br />exec sp_changeobjectowner 'tablename','dbo'</p>
												<p>9、存储更改全部表</p>
												<p>CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch<br /> @OldOwner as NVARCHAR(128),<br /> @NewOwner as NVARCHAR(128)<br />AS</p>
												<p>DECLARE @Name   as NVARCHAR(128)<br />DECLARE @Owner  as NVARCHAR(128)<br />DECLARE @OwnerName  as NVARCHAR(128)</p>
												<p>DECLARE curObject CURSOR FOR <br /> select 'Name'   = name,<br />  'Owner'   = user_name(uid)<br /> from sysobjects<br /> where user_name(uid)=@OldOwner<br /> order by name</p>
												<p>OPEN  curObject<br />FETCH NEXT FROM curObject INTO @Name, @Owner<br />WHILE(@@FETCH_STATUS=0)<br />BEGIN     <br /> if @Owner=@OldOwner <br /> begin<br />  set @OwnerName = @OldOwner + '.' + rtrim(@Name)<br />  exec sp_changeobjectowner @OwnerName, @NewOwner<br /> end<br />-- select @name,@NewOwner,@OldOwner</p>
												<p> FETCH NEXT FROM curObject INTO @Name, @Owner<br />END</p>
												<p>close curObject<br />deallocate curObject<br />GO</p>
												<p>
														<br />10、SQL SERVER中直接循环写入数据<br />declare @i int<br />set @i=1<br />while @i&lt;30<br />begin<br />   insert into test (userid) values(@i)<br />   set @i=@i+1<br />end</p>
										</span>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/superwei/aggbug/98994.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/superwei/" target="_blank">小辞猬</a> 2007-02-09 13:29 <a href="http://www.blogjava.net/superwei/articles/98994.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL的使用规范</title><link>http://www.blogjava.net/superwei/articles/98989.html</link><dc:creator>小辞猬</dc:creator><author>小辞猬</author><pubDate>Fri, 09 Feb 2007 05:23:00 GMT</pubDate><guid>http://www.blogjava.net/superwei/articles/98989.html</guid><wfw:comment>http://www.blogjava.net/superwei/comments/98989.html</wfw:comment><comments>http://www.blogjava.net/superwei/articles/98989.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/superwei/comments/commentRss/98989.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/superwei/services/trackbacks/98989.html</trackback:ping><description><![CDATA[SQL的使用规范： <br />i. 尽量避免大事务操作，慎用holdlock子句，提高系统并发能力。 <br /><br />ii. 尽量避免反复访问同一张或几张表，尤其是数据量较大的表，可以考虑先根据条件提取数据到临时表中，然后再做连接。 <br /><br />iii. 尽量避免使用游标，因为游标的效率较差，如果游标操作的数据超过1万行，那么就应该改写；如果使用了游标，就要尽量避免在游标循环中再进行表连接的操作。 <br /><br />iv. 注意where字句写法，必须考虑语句顺序，应该根据索引顺序、范围大小来确定条件子句的前后顺序，尽可能的让字段顺序与索引顺序相一致，范围从大到小。 <br /><br />v. 不要在where子句中的“=”左边进行函数、算术运算或其他表达式运算，否则系统将可能无法正确使用索引。 <br /><br />vi. 尽量使用exists代替select count(1)来判断是否存在记录，count函数只有在统计表中所有行数时使用，而且count(1)比count(*)更有效率。 <br /><br />vii. 尽量使用“&gt;=”，不要使用“&gt;”。 <br /><br />viii. 注意一些or子句和union子句之间的替换 <br /><br />ix. 注意表之间连接的数据类型，避免不同类型数据之间的连接。 <br /><br />x. 注意存储过程中参数和数据类型的关系。 <br /><br />xi. 注意insert、update操作的数据量，防止与其他应用冲突。如果数据量超过200个数据页面（400k），那么系统将会进行锁升级，页级锁会升级成表级锁。 <br /><br />b) 索引的使用规范： <br /><br />i. 索引的创建要与应用结合考虑，建议大的OLTP表不要超过6个索引。 <br /><br />ii. 尽可能的使用索引字段作为查询条件，尤其是聚簇索引，必要时可以通过index index_name来强制指定索引 <br /><br />iii. 避免对大表查询时进行table scan，必要时考虑新建索引。 <br /><br />iv. 在使用索引字段作为条件时，如果该索引是联合索引，那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引，否则该索引将不会被使用。 <br /><br />v. 要注意索引的维护，周期性重建索引，重新编译存储过程。 <br /><br />c) tempdb的使用规范： <br /><br />i. 尽量避免使用distinct、order by、group by、having、join、cumpute，因为这些语句会加重tempdb的负担。 <br /><br />ii. 避免频繁创建和删除临时表，减少系统表资源的消耗。 <br /><br />iii. 在新建临时表时，如果一次性插入数据量很大，那么可以使用select into代替create table，避免log，提高速度；如果数据量不大，为了缓和系统表的资源，建议先create table，然后insert。 <br /><br />iv. 如果临时表的数据量较大，需要建立索引，那么应该将创建临时表和建立索引的过程放在单独一个子存储过程中，这样才能保证系统能够很好的使用到该临时表的索引。 <br /><br />v. 如果使用到了临时表，在存储过程的最后务必将所有的临时表显式删除，先truncate table，然后drop table，这样可以避免系统表的较长时间锁定。 <br /><br />vi. 慎用大的临时表与其他大表的连接查询和修改，减低系统表负担，因为这种操作会在一条语句中多次使用tempdb的系统表。 <br /><br />d) 合理的算法使用： <br /><br />根据上面已提到的SQL优化技术和ASE Tuning手册中的SQL优化内容,结合实际应用,采用多种算法进行比较,以获得消耗资源最少、效率最高的方法。具体可用ASE调优命令：set statistics io on, set statistics time on , set showplan on 等。<img src ="http://www.blogjava.net/superwei/aggbug/98989.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/superwei/" target="_blank">小辞猬</a> 2007-02-09 13:23 <a href="http://www.blogjava.net/superwei/articles/98989.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 四种联系(join)的区别及用法 </title><link>http://www.blogjava.net/superwei/articles/98969.html</link><dc:creator>小辞猬</dc:creator><author>小辞猬</author><pubDate>Fri, 09 Feb 2007 04:00:00 GMT</pubDate><guid>http://www.blogjava.net/superwei/articles/98969.html</guid><wfw:comment>http://www.blogjava.net/superwei/comments/98969.html</wfw:comment><comments>http://www.blogjava.net/superwei/articles/98969.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/superwei/comments/commentRss/98969.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/superwei/services/trackbacks/98969.html</trackback:ping><description><![CDATA[
		<ul>
				<li>链接： </li>
		</ul>
		<p>作为动词，它表示将两个或多个表的内容结合在一起并产生一个结果集，该结果集对每个表的列和行进行合并。表的联接一般都使用它们共有的数据。例如，您可以对有一个共同 pub_id 列的 titles 表和 publishers 表联接，产生一个包含书名信息和出版商信息的结果集。</p>
		<p>作为名词，表示对表进行联接的过程或结果，如在术语"内部联接"中表示对表联接的一种特殊的方法。</p>
		<ul>
				<li>联接条件（join condition） </li>
		</ul>
		<p>一个比较子句，它指定了表是如何通过它们的联接字段相联系的。最普通的联接条件是相等（一个等联接），在等联接中联接字段的值必须相同。例如，您可以通过在 titles 表和 publishers 表的 pub_id 列中查找相匹配的值联接这两个表。然而，任何比较运算符都可以是比较条件的一部分。</p>
		<ul>
				<li>内部联接（inner join） </li>
		</ul>
		<p>一个联接，在该联接中只有当联接字段的值满足某些特定的准则时才将两个表的记录进行结合并添加到一个查询结果中。例如，在查询设计器视图中，表之间的缺省联接是一个内部联接，它只有当联接字段的值相等时才从两个表中选择记录。</p>
		<ul>
				<li>外部联接（outer join） </li>
		</ul>
		<p>一个联接，该联接还包括那些和联接表中记录不相关的记录。您可以创建一个外部联接的三种变形来指定所包括的不匹配行：左外部联接、右外部联接和完全外部联接。</p>
		<ul>
				<li>左外部联接（left outer join） </li>
		</ul>
		<p>一种外部联接类型，在该联接中包括第一个命名表（左边的表，它出现在 JOIN 子句的最左边）的所有行。右边表中没有匹配的行不出现。例如，您可以在 titles 表和 publishers 表之间创建一个左外部联接，以包括所有的书名，不论书名有无出版商的信息。</p>
		<ul>
				<li>右外部联接（right outer join） </li>
		</ul>
		<p>一种外部联接，在该联接中包括第二个命名表（右边的表，出现在 JOIN 子句中的最右边）的所有行。不包括左边表中没有匹配的行。例如，titles 表和 publishers 表之间的一个右外部联接将包括所有的出版商，甚至包括那些在 titles 表中没有书名的出版商。</p>
		<p>以上是MSDN中对链接的定义。现在我们就从这四种链接所使用的不同方法来看他们的结果有什么不同。</p>
		<pre>titles 表sh(书号)		ph(出版商编号)232342		0010432		00382478123	005</pre>
		<p>publishers 表<br />ph(出版商编号) mc(出版商名称)<br />001 红虎<br />002 rmh<br />003 hazl</p>
		<p>现要把这两个表的内容合成如下的表结构：</p>
		<pre>sh(书号)    ph(出版商编号)        mc(出版商名称)</pre>
		<p>现在看看采用四种链接方法的结果会有什么不同。先说说他们的命令：</p>
		<p>内联接：<br />sele titles.sh,publishers.ph,publishers.mc ;<br />  from titles inner join publishers ;    &amp;&amp;内联接中的inner是可以省略的<br />    on titles.ph=publishers.ph</p>
		<p>外联接：<br />sele titles.sh,publishers.ph,publishers.mc ;<br />  from titles outer join publishers ;<br />    on titles.ph=publishers.ph</p>
		<p>左联接：<br />sele titles.sh,publishers.ph,publishers.mc ;<br />  from titles left join publishers ;<br />    on titles.ph=publishers.ph</p>
		<p>右联接：<br />sele titles.sh,publishers.ph,publishers.mc ;<br />  from titles right join publishers ;<br />    on titles.ph=publishers.ph</p>
		<p>大家可能看到，除了在join之前的那个关键字不同之外，其他地方是一模一样的，链接条件(即on那一部分)也是一样的。结果：</p>
		<p>内链接：</p>
		<pre>232342		001	红虎0432		003	hazl</pre>
		<p>全链接：</p>
		<pre>232342		001	001	红虎Null		Null	002	rmh0432		003	003	hazl82478123	005	Null	Null</pre>
		<p>左链接：</p>
		<pre>232342		001	001	红虎0432		003	003	hazl82478123	005	Null	Null</pre>
		<p>右链接：</p>
		<pre>232342		001	001	红虎Null		Null	002	rmh0432		003	003	hazl</pre>
		<p>所以我们很容易记住：</p>
		<p>1、左链接：就是以join的左边那个表为"主"，以titles.ph=publishers.ph为判断标准，不管右边的表有没有对应的记录，都要把左边表的记录放在结果中去，但右边表没有相应的记录那应该放个什么数值进去？答案是就放个Null，表示没有。在左链接中，某记录在右边表，却不在左边表，那是不放进去结果去的，原因是左边表才是"主"，要不要放由它决定：它有的，就一定放进去，它没有的，就不要了。</p>
		<p>2、右链接：和左链接一样，只不过为"主"的一方调过来了，换成是由右边做"主"。</p>
		<p>3、内链接：和左、右链接不同，它一定要左、右两边都有的记录才会放进结果，如果有某个记录不存在于任何一边，那这个记录是不会出现在结果中去的。</p>
		<p>4、外链接：跟内联接相，反，相当于左、右链接的合并：不管什么情况，只要某个记录出现在这两个表，就一定会出现在结果中去，然后象左、右链接的处理方法一样，用Null来填充没有对应值的字段。</p>
		<p>
				<strong>注：以上说的"有"、"没有"，意思是以titles.ph=publishers.ph为判断标准来下决定的。比如当前titles表的ph是"002"，而在publishers中，没有一个记录的ph的值是"002"的，所以就说"002"这个值在titles有，在publisher中没有，这样titles.ph为"002"的记录就会被选中，最后放在结果中去。</strong>
		</p>
		<p>大家如果想一下，这个on的作用跟where、having似乎有点类似，都是起到过滤的作用：根据条件选取所取的记录，而根据命令的工作流程，这个on是比where、having都要早执行的，而它里面的条件表达式又不一定是titles.ph=publishers.ph的形式，还可以继续扩充，变成一个很复杂的条件表达式，从而完成一个很有效的、where和having都不能实现的过滤功能。具体的比较请看 <a href="http://www.host01.com/Get/database/hcc5-p2/hcc5-p2.htm">on、where、having的区别</a> 一节。</p>
		<p>刚才举的例子，表中的ph都是没有重复的。现在以内联接为例，举个判断字段中内容有重复的例子：</p>
		<pre>Temp1		temp2Aa		aa1		11		22		23		2</pre>
		<pre>sele temp1.aa,temp2.aa ;  from temp1 join temp2 ;    on temp1.aa=temp2.aa</pre>
		<p>运行结果是：</p>
		<pre>1	11	12	22	22	2</pre>
		<p>很明显，有些记录重复了几遍。temp1.aa中的虽然只有1个2，但temp2.aa有3个2，所以结果就会有1＊3＝3个2了。如果temp1.aa而2个2的话，那结果就会有2＊3＝6个2了。</p>
		<p>知道了这一点，在做多表链接查询的时候很有用。你要考虑第一、二个链接后的结果跟第三个表链接时，会不会出现这种情况？如果有，那是不是你想要的？如果有，那怎么处理？有些朋友说做这个命令的结果中有些记录会比正确的结果大几倍，就要看看是不是出现了这种重复算的情况。</p>
		<p>学会了链接，在开始做之前，先要说一个很重要的问题：在视图设计器来看多个表的联接关系，它们之间的链接是用一条线连接起来的，看起来就象一串糖葫芦。如果一个表同时和三个表联接，那看起来就象一支分叉的树枝了，那这种情况结果就不对了。大家可能不明白我在说什么，我举个例子大家就会明白了。</p>
		<p>有一个产品表、一个进货明细表、一个出货明细表，现在的要求是要求产品表中所有的产品的进、出情况，也就是把三个表象join命令那样合成一个表，如果没有相应的进、出记录，也照样列出来但不计较null值。刚开始学的朋友很可就会这样做：</p>
		<p>1、 在设计器里添加这三个表；</p>
		<p>2、 然后用产品表中的产品编号分别与其它二个表左链接，这样产品表中就有二个链接(也就是二条线了)；</p>
		<p>3、 然后把三个表的字段都做为输出字段。</p>
		<p>但结果呢？不对。只有一个表的记录出现在结果中，即使把四种链接类型都试一下，结果都是不对的。</p>
		<p>为什么呢？我估计是以下原因：如果产品表只与进货表链接的话，系统根据产品表和进货表的联接关系，以产品表为左表，和进货这个右表组成一个临时结果，然后又以临时表为左表，再去找进货表的右边表。而进货表的右边没有表，这时系统就停止链接，交给where去过滤了。但现在产品表同时跟二个表左联接，系统会自动选其中一个先进行链接，链接结果出来后，这个临时结果的右边就没有表了，系统就停止链接动作了。剩下的出货表、退货表都还没链接，所以那个表等于没用。</p>
		<p>解决的方法是：进货表用进货表的产品编号全链接产品表，然后产品表又用产品表的产品编号全链接出货表，进、货表的顺序可以调过来，但产品表一定要在中间，且两个链接类型都是全链接，否则结果都不对。这样的链接情况，在设计器里按链接中的各个表的左右顺序排起来，很直观的：就是一串！没有分叉。这个方法的实现过程就是：</p>
		<p>进货表全链接产品表，即使某种产品没有进货，但得出来的结果也一样有这个记录，只是它的进货内容是null值。然后这个临时结果又跟出货表全链接，这次的结果就前一步差不多，有出货内容的记录就有出货数量，否则就是null值。因为没有分叉，所以全部表都链接进去了，结果也就对了(当然如果链接类型错了，结果也是不对的)。</p>
		<p>看了刚才那个问题之后，还有一个问题也要说一下。在刚才那个例子中，如果产品表中某个产品编号出现了重复，有N个记录的编号相同，而在进货表里这个编号的记录也出现M个，这样一来，结果就有点不同了。首先在进货表跟产品表的全链接结果里，这个编号就会出现N＊M次，就不是一次了。然后这个临时表再去跟出货表全链接时，即使这个编号在出货表里出现一次，但在最后的链接结果中，这个编号还是会出现N＊M次，那它的出货记录也重复了N＊M次了。如果现在要sum()出货记录的话，那出货数量就会放大了N＊M倍了，进货记录也不准了。所以如果产品表中的编号有重复的话，那结果就很可能会不对了。</p>
		<p>但产品表的编号没有重复，那结果就一定会正确呢？也未必。大家试一下，假设进货表和产品表的编号"001"都是只出现一次，但出货表中就出现了二次。那最后的结果中"001"还是出现了二次，二次的产品名称、进货数量都是相同的，只是出货数量不同而已。如果这时sum()，结果还是不对。</p>
		<p>所以如果想在多表链接后进行sum()之类的汇总操作，使用以上的方法是不行的。解决方法是使用union，用它来将进货的汇总情况跟出货的汇总情况合起来，从而避免互相干扰。</p>
		<p>另注：3个表之间的连接</p>
		<p>eg：      select a.* b.field1,c.field2 from table a left outer jion table b on a,field1=b.field1 left outer join table c on a.field2=c.field2</p>
<img src ="http://www.blogjava.net/superwei/aggbug/98969.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/superwei/" target="_blank">小辞猬</a> 2007-02-09 12:00 <a href="http://www.blogjava.net/superwei/articles/98969.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> SQL*PLUS命令的使用大全 </title><link>http://www.blogjava.net/superwei/articles/98963.html</link><dc:creator>小辞猬</dc:creator><author>小辞猬</author><pubDate>Fri, 09 Feb 2007 03:42:00 GMT</pubDate><guid>http://www.blogjava.net/superwei/articles/98963.html</guid><wfw:comment>http://www.blogjava.net/superwei/comments/98963.html</wfw:comment><comments>http://www.blogjava.net/superwei/articles/98963.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/superwei/comments/commentRss/98963.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/superwei/services/trackbacks/98963.html</trackback:ping><description><![CDATA[
		<div class="postTitle">   <br />       Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中，可以运行sql*plus命令与sql*plus语句。 <br />   我们通常所说的DML、DDL、DCL语句都是sql*plus语句，它们执行完后，都可以保存在一个被称为sql buffer的内存区域中，并且只能保存一条最近执行的sql语句，我们可以对保存在sql buffer中的sql 语句进行修改，然后再次执行，sql*plus一般都与数据库打交道。 <br />   除了sql*plus语句，在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后，不保存在sql buffer的内存区域中，它们一般用来对输出的结果进行格式化显示，以便于制作报表。 <br />   下面就介绍一下一些常用的sql*plus命令： <br />  <br />1. 执行一个SQL脚本文件 <br />SQL&gt;start file_name <br />SQL&gt;@ file_name <br />我们可以将多条sql语句保存在一个文本文件中，这样当要执行这个文件中的所有的sql语句时，用上面的任一命令即可，这类似于dos中的批处理。 </div>
		<div class="postText">
				<p>@与@@的区别是什么？<br />@等于start命令，用来运行一个sql脚本文件。<br />@命令调用当前目录下的，或指定全路径，或可以通过SQLPATH环境变量搜寻到的脚本文件。该命令使用是一般要指定要执行的文件的全路径，否则从缺省路径(可用SQLPATH变量指定)下读取指定的文件。<br />@@用在sql脚本文件中，用来说明用@@执行的sql脚本文件与@@所在的文件在同一目录下，而不用指定要执行sql脚本文件的全路径，也不是从SQLPATH环境变量指定的路径中寻找sql脚本文件，该命令一般用在脚本文件中。<br />如：在c:\temp目录下有文件start.sql和nest_start.sql，start.sql脚本文件的内容为：<br />@@nest_start.sql     - - 相当于@ c:\temp\nest_start.sql<br />则我们在sql*plus中，这样执行：<br />SQL&gt; @ c:\temp\start.sql </p>
				<p>
						<br />2. 对当前的输入进行编辑 <br />SQL&gt;edit <br />  <br />3. 重新运行上一次运行的sql语句 <br />SQL&gt;/ <br />  <br />4. 将显示的内容输出到指定文件 <br />SQL&gt; SPOOL file_name <br />   在屏幕上的所有内容都包含在该文件中，包括你输入的sql语句。 <br />  <br />5. 关闭spool输出 <br />SQL&gt; SPOOL OFF <br />   只有关闭spool输出，才会在输出文件中看到输出的内容。 <br />  <br />6．显示一个表的结构 <br />SQL&gt; desc table_name <br />  <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 />  <br />1). 改变缺省的列标题 <br />COLUMN column_name HEADING column_heading <br />For example: <br />Sql&gt;select * from dept; <br />     DEPTNO DNAME                        LOC <br />---------- ---------------------------- --------- <br />         10 ACCOUNTING                   NEW YORK <br />sql&gt;col  LOC heading location <br />sql&gt;select * from dept; <br />    DEPTNO DNAME                        location <br />--------- ---------------------------- ----------- <br />        10 ACCOUNTING                   NEW YORK <br />  <br />2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上： <br />Sql&gt;select * from emp <br />Department  name           Salary <br />---------- ---------- ---------- <br />         10 aaa                11         <br />SQL&gt; COLUMN ENAME HEADING ’Employee|Name’ <br />Sql&gt;select * from emp <br />            Employee <br />Department  name           Salary <br />---------- ---------- ----------  <br />         10 aaa                11 <br />note: the col heading turn into two lines from one line. <br />  <br />3). 改变列的显示长度： <br />FOR[MAT] format <br />Sql&gt;select empno,ename,job from emp; <br />      EMPNO ENAME      JOB        <br />---------- ----------     --------- <br />       7369 SMITH      CLERK      <br />       7499 ALLEN      SALESMAN   <br />7521 WARD       SALESMAN   <br />Sql&gt; col ename format a40 <br />      EMPNO ENAME                                    JOB <br />----------   ----------------------------------------         --------- <br />       7369 SMITH                                    CLERK <br />       7499 ALLEN                                    SALESMAN <br />       7521 WARD                                    SALESMAN <br />  <br />4). 设置列标题的对齐方式 <br />JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]} <br />SQL&gt; col ename justify center <br />SQL&gt; / <br />      EMPNO           ENAME                   JOB <br />----------   ----------------------------------------       --------- <br />       7369 SMITH                                    CLERK <br />       7499 ALLEN                                    SALESMAN <br />7521 WARD                                     SALESMAN <br />对于NUMBER型的列，列标题缺省在右边，其它类型的列标题缺省在左边 <br />  <br />5). 不让一个列显示在屏幕上 <br />NOPRI[NT]|PRI[NT] <br />SQL&gt; col job noprint <br />SQL&gt; / <br />      EMPNO           ENAME <br />----------     ---------------------------------------- <br />       7369 SMITH <br />       7499 ALLEN <br />7521 WARD <br />  <br />6). 格式化NUMBER类型列的显示： <br />SQL&gt; COLUMN SAL FORMAT $99,990 <br />SQL&gt; / <br />Employee <br />Department Name        Salary    Commission <br />---------- ---------- --------- ---------- <br />30          ALLEN        $1,600    300 <br />  <br />7). 显示列值时，如果列值为NULL值，用text值代替NULL值 <br />COMM NUL[L] text <br />SQL&gt;COL COMM NUL[L] text <br />  <br />8). 设置一个列的回绕方式 <br />WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED] <br />        COL1 <br />-------------------- <br />HOW ARE YOU? <br />  <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 />  <br />SQL&gt; COL COL1 WORD_WRAPPED <br />COL1 <br />----- <br />HOW <br />ARE <br />YOU? <br />  <br />SQL&gt; COL COL1 WORD_WRAPPED <br />COL1 <br />----- <br />HOW A <br />  <br />9). 显示列的当前的显示属性值 <br />SQL&gt; COLUMN column_name <br />  <br />10). 将所有列的显示属性设为缺省值 <br />SQL&gt; CLEAR COLUMNS <br />  <br />8. 屏蔽掉一个列中显示的相同的值 <br />BREAK ON break_column <br />SQL&gt; BREAK ON DEPTNO <br />SQL&gt; SELECT DEPTNO, ENAME, SAL <br />FROM EMP <br />  WHERE SAL &amp;lt; 2500 <br />  ORDER BY DEPTNO; <br />DEPTNO      ENAME         SAL <br />---------- ----------- --------- <br />10           CLARK        2450 <br />MILLER      1300 <br />20            SMITH       800 <br />ADAMS       1100 <br />  <br />9. 在上面屏蔽掉一个列中显示的相同的值的显示中，每当列值变化时在值变化之前插入n个空行。 <br />BREAK ON break_column SKIP n <br />  <br />SQL&gt; BREAK ON DEPTNO SKIP 1 <br />SQL&gt; / <br />DEPTNO ENAME SAL <br />---------- ----------- --------- <br />10 CLARK 2450 <br />MILLER 1300 <br />  <br />20 SMITH 800 <br />ADAMS 1100 <br />  <br />10. 显示对BREAK的设置 <br />SQL&gt; BREAK <br />  <br />11. 删除6、7的设置 <br />SQL&gt; CLEAR BREAKS <br />  <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 />  <br />1). 设置当前session是否对修改的数据进行自动提交 <br />SQL&gt;SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n} <br />  <br />2)．在用start命令执行一个sql脚本时，是否显示脚本中正在执行的SQL语句 <br />SQL&gt; SET ECHO {ON|OFF} <br />  <br />3).是否显示当前sql语句查询或修改的行数 <br />SQL&gt; SET FEED[BACK] {6|n|ON|OFF} <br />   默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ，则不管查询到多少行都返回。当为off 时，一律不显示查询的行数 <br />  <br />4).是否显示列标题 <br />SQL&gt; SET HEA[DING] {ON|OFF} <br />当set heading off 时，在每页的上面不显示列标题，而是以空白行代替 <br />  <br />5).设置一行可以容纳的字符数 <br />SQL&gt; SET LIN[ESIZE] {80|n} <br />   如果一行的输出内容大于设置的一行可容纳的字符数，则折行显示。 <br />  <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 />  <br />7).显示时，用text值代替NULL值 <br />SQL&gt; SET NULL text <br />  <br />8).设置一页有多少行数 <br />SQL&gt; SET PAGES[IZE] {24|n} <br />如果设为0，则所有的输出内容为一页并且不显示列标题 <br />  <br />9).是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息。 <br />SQL&gt; SET SERVEROUT[PUT] {ON|OFF}  <br />在编写存储过程时，我们有时会用dbms_output.put_line将必要的信息输出，以便对存储过程进行调试，只有将serveroutput变量设为on后，信息才能显示在屏幕上。 <br />  <br />10).当SQL语句的长度大于LINESIZE时，是否在显示时截取SQL语句。 <br />SQL&gt; SET WRA[P] {ON|OFF} <br />   当输出的行的长度大于设置的行的长度时（用set linesize n命令设置），当set wrap on时，输出行的多于的字符会另起一行显示，否则，会将输出行的多于字符切除，不予显示。 <br />  <br />11).是否在屏幕上显示输出的内容，主要用与SPOOL结合使用。 <br />SQL&gt; SET TERM[OUT] {ON|OFF} <br />   在用spool命令将一个大表中的内容输出到一个文件中时，将内容输出在屏幕上会耗费大量的时间，设置set termspool off后，则输出的内容只会保存在输出文件中，不会显示在屏幕上，极大的提高了spool的速度。 <br />  <br />12).将SPOOL输出中每行后面多余的空格去掉 <br />SQL&gt; SET TRIMS[OUT] {ON|OFF}  <br />    <br />13)显示每个sql语句花费的执行时间 <br />set TIMING  {ON|OFF} </p>
				<p>14). 遇到空行时不认为语句已经结束，从后续行接着读入。<br />SET SQLBLANKLINES ON<br />Sql*plus中, 不允许sql语句中间有空行, 这在从其它地方拷贝脚本到sql*plus中执行时很麻烦. 比如下面的脚本:<br />select deptno, empno, ename<br />from emp</p>
				<p>where empno = '7788';<br />如果拷贝到sql*plus中执行, 就会出现错误。这个命令可以解决该问题</p>
				<p>15).设置DBMS_OUTPUT的输出<br />SET SERVEROUTPUT ON BUFFER 20000<br />用dbms_output.put_line('strin_content');可以在存储过程中输出信息，对存储过程进行调试<br />如果想让dbms_output.put_line('     abc');的输出显示为：<br />SQL&gt;     abc，而不是SQL&gt;abc，则在SET SERVEROUTPUT ON后加format wrapped参数。</p>
				<p>16). 输出的数据为html格式<br />set markup html<br />在8.1.7版本(也许是816? 不太确定)以后, sql*plus中有一个set markup html的命令, 可以将sql*plus的输出以html格式展现.<br />注意其中的spool on, 当在屏幕上输出的时候, 我们看不出与不加spool on有什么区别, 但是当我们使用spool filename 输出到文件的时候, 会看到spool文件中出现了等tag.</p>
				<p>
						<br />14．修改sql buffer中的当前行中，第一个出现的字符串 <br />C[HANGE] /old_value/new_value <br />SQL&gt; l <br />   1* select * from dept <br />SQL&gt; c/dept/emp <br />   1* select * from emp <br />  <br />15．编辑sql buffer中的sql语句 <br />EDI[T] <br />  <br />16．显示sql buffer中的sql语句，list n显示sql buffer中的第n行，并使第n行成为当前行 <br />L[IST] [n] <br />  <br />17．在sql buffer的当前行下面加一行或多行 <br />I[NPUT] <br />  <br />18．将指定的文本加到sql buffer的当前行后面 <br />A[PPEND] <br />SQL&gt; select deptno, <br />   2  dname <br />   3  from dept; <br />     DEPTNO DNAME <br />---------- -------------- <br />         10 ACCOUNTING <br />         20 RESEARCH <br />         30 SALES <br />         40 OPERATIONS <br />  <br />SQL&gt; L 2 <br />   2* dname <br />SQL&gt; a ,loc <br />   2* dname,loc <br />SQL&gt; L <br />   1  select deptno, <br />   2  dname,loc <br />   3* from dept <br />SQL&gt; / <br />  <br />     DEPTNO DNAME          LOC <br />---------- -------------- ------------- <br />         10 ACCOUNTING     NEW YORK <br />         20 RESEARCH       DALLAS <br />         30 SALES          CHICAGO <br />         40 OPERATIONS     BOSTON <br />  <br />19．将sql buffer中的sql语句保存到一个文件中 <br />SAVE file_name <br />  <br />20．将一个文件中的sql语句导入到sql buffer中 <br />GET file_name <br />  <br />21．再次执行刚才已经执行的sql语句 <br />RUN <br />or <br />/ <br />  <br />22．执行一个存储过程 <br />EXECUTE procedure_name <br />  <br />23．在sql*plus中连接到指定的数据库 <br />CONNECT <a href="mailto:user_name/passwd@db_alias">user_name/passwd@db_alias</a><br />  <br />24．设置每个报表的顶部标题 <br />TTITLE <br />  <br />25．设置每个报表的尾部标题 <br />BTITLE <br />  <br />26．写一个注释 <br />REMARK [text] <br />  <br />27．将指定的信息或一个空行输出到屏幕上 <br />PROMPT [text] <br />  <br />28．将执行的过程暂停，等待用户响应后继续执行 <br />PAUSE [text] <br />  <br />Sql&gt;PAUSE Adjust paper and press RETURN to continue. <br />  <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 />  <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>  <br />create emp_temp <br />USING SELECT * FROM EMP <br />  <br />30．不退出sql*plus，在sql*plus中执行一个操作系统命令： <br />HOST <br />  <br />Sql&gt; host hostname <br />该命令在windows下可能被支持。 <br />  <br />31．在sql*plus中，切换到操作系统命令提示符下，运行操作系统命令后，可以再次切换回sql*plus： <br />! <br />  <br />sql&gt;! <br />$hostname <br />$exit <br />sql&gt; <br />  <br />该命令在windows下不被支持。 <br />  <br />32．显示sql*plus命令的帮助 <br />HELP <br />如何安装帮助文件： <br />Sql&gt;@ ?\sqlplus\admin\help\hlpbld.sql ?\sqlplus\admin\help\helpus.sql <br />Sql&gt;help index <br />  <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 />  <br />1) . 显示当前环境变量的值： <br />Show all <br />  <br />2) . 显示当前在创建函数、存储过程、触发器、包等对象的错误信息 <br />Show error <br />当创建一个函数、存储过程等出错时，变可以用该命令查看在那个地方出错及相应的出错信息，进行修改后再次进行编译。 <br />  <br />3) . 显示初始化参数的值： <br />show PARAMETERS [parameter_name] <br />  <br />4) . 显示数据库的版本： <br />show REL[EASE] <br />  <br />5) . 显示SGA的大小 <br />show SGA <br />  <br />6). 显示当前的用户名 <br />show user</p>
				<p>34.查询一个用户下的对象<br />SQL&gt;select * from tab;<br />SQL&gt;select * from user_objects;</p>
				<p>35.查询一个用户下的所有的表<br />SQL&gt;select * from user_tables;</p>
				<p>36.查询一个用户下的所有的索引<br />SQL&gt;select * from user_indexes;</p>
				<p>
						<br />37. 定义一个用户变量<br />方法有两个：<br />a. define<br />b. COL[UMN] [{column|expr} NEW_V[ALUE] variable [NOPRI[NT]|PRI[NT]]<br />                            OLD_V[ALUE] variable  [NOPRI[NT]|PRI[NT]]</p>
				<p>下面对每种方式给予解释：<br />a. Syntax<br />DEF[INE] [variable]|[variable = text]<br />定义一个用户变量并且可以分配给它一个CHAR值。</p>
				<p>assign the value MANAGER to the variable POS, type:<br />SQL&gt; DEFINE POS = MANAGER</p>
				<p>assign the CHAR value 20 to the variable DEPTNO, type:<br />SQL&gt; DEFINE DEPTNO = 20</p>
				<p>list the definition of DEPTNO, enter<br />SQL&gt; DEFINE DEPTNO<br />        ―――――――――――――――<br />DEFINE DEPTNO = ”20” (CHAR)</p>
				<p>定义了用户变量POS后，就可以在sql*plus中用&amp;POS或&amp;&amp;POS来引用该变量的值，sql*plus不会再提示你给变量输入值。</p>
				<p>b. COL[UMN] [{column|expr} NEW_V[ALUE] variable [NOPRI[NT]|PRI[NT]]<br />NEW_V[ALUE] variable<br />指定一个变量容纳查询出的列值。<br />例:column col_name new_value var_name noprint<br />   select col_name from table_name where ……..<br />将下面查询出的col_name列的值赋给var_name变量.</p>
				<p>一个综合的例子:<br />得到一个列值的两次查询之差(此例为10秒之内共提交了多少事务):<br />column redo_writes new_value commit_count</p>
				<p>select sum(stat.value) redo_writes<br />from v$sesstat stat, v$statname sn<br />where stat.statistic# = sn.statistic#<br />and sn.name = 'user commits';</p>
				<p>-- 等待一会儿(此处为10秒);<br />execute dbms_lock.sleep(10);</p>
				<p>set veri off<br />select sum(stat.value) - &amp;commit_count commits_added<br />from v$sesstat stat, v$statname sn<br />where stat.statistic# = sn.statistic#<br />and sn.name = 'user commits';</p>
				<p>
						<br />38. 定义一个绑定变量<br />VAR[IABLE] [variable [NUMBER|CHAR|CHAR (n)|NCHAR|NCHAR (n) |VARCHAR2 (n)|NVARCHAR2 (n)|CLOB|NCLOB|REFCURSOR]]<br />定义一个绑定变量，该变量可以在pl/sql中引用。<br />可以用print命令显示该绑定变量的信息。<br />如：<br />column inst_num  heading "Inst Num"  new_value inst_num  format 99999;<br />column inst_name heading "Instance"  new_value inst_name format a12;<br />column db_name   heading "DB Name"   new_value db_name   format a12;<br />column dbid      heading "DB Id"     new_value dbid      format 9999999999 just c;</p>
				<p>prompt<br />prompt Current Instance<br />prompt ~~~~~~~~~~~~~~~~</p>
				<p>select d.dbid            dbid<br />     , d.name            db_name<br />     , i.instance_number inst_num<br />     , i.instance_name   inst_name<br />  from v$database d,<br />       v$instance i;</p>
				<p>variable dbid       number;<br />variable inst_num   number;<br />begin<br />  :dbid      :=  &amp;dbid;<br />  :inst_num  :=  &amp;inst_num;<br />end;<br />/<br />说明：<br />在sql*plus中，该绑定变量可以作为一个存储过程的参数，也可以在匿名PL/SQL块中直接引用。为了显示用VARIABLE命令创建的绑定变量的值，可以用print命令</p>
				<p>注意：<br />绑定变量不同于变量：<br />1．        定义方法不同<br />2．        引用方法不同<br />绑定变量：:variable_name<br />        变量：&amp;variable_name or &amp;&amp;variable_name<br />3.在sql*plus中，可以定义同名的绑定变量与用户变量，但是引用的方法不同。</p>
				<p>39. &amp;与&amp;&amp;的区别<br />&amp;用来创建一个临时变量，每当遇到这个临时变量时，都会提示你输入一个值。<br />&amp;&amp;用来创建一个持久变量，就像用用define命令或带new_vlaue字句的column命令创建的持久变量一样。当用&amp;&amp;命令引用这个变量时，不会每次遇到该变量就提示用户键入值，而只是在第一次遇到时提示一次。</p>
				<p>如，将下面三行语句存为一个脚本文件，运行该脚本文件，会提示三次，让输入deptnoval的值：<br />select count(*) from emp where deptno = &amp;deptnoval;<br />select count(*) from emp where deptno = &amp;deptnoval;<br />select count(*) from emp where deptno = &amp;deptnoval;</p>
				<p>将下面三行语句存为一个脚本文件，运行该脚本文件，则只会提示一次，让输入deptnoval的值：<br />select count(*) from emp where deptno = &amp;&amp;deptnoval;<br />select count(*) from emp where deptno = &amp;&amp;deptnoval;<br />select count(*) from emp where deptno = &amp;&amp;deptnoval;</p>
				<p>40．在输入sql语句的过程中临时先运行一个sql*plus命令(摘自<a href="http://www.itpub.com/">http://www.itpub.com/</a>)<br />#<br />有没有过这样的经历? 在sql*plus中敲了很长的命令后, 突然发现想不起某个列的名字了, 如果取消当前的命令,待查询后再重敲, 那太痛苦了. 当然你可以另开一个sql*plus窗口进行查询, 但这里提供的方法更简单.</p>
				<p>比如说, 你想查工资大于4000的员工的信息, 输入了下面的语句:</p>
				<p>SQL&gt; select deptno, empno, ename<br />2 from emp<br />3 where<br />这时, 你发现你想不起来工资的列名是什么了.</p>
				<p>这种情况下, 只要在下一行以#开头, 就可以执行一条sql*plus命令, 执行完后, 刚才的语句可以继续输入</p>
				<p>SQL&gt;&gt; select deptno, empno, ename<br />2 from emp<br />3 where<br />6 #desc emp<br />Name Null? Type<br />----------------------------------------- -------- --------------<br />EMPNO NOT NULL NUMBER(4)<br />ENAME VARCHAR2(10)<br />JOB VARCHAR2(9)<br />MGR NUMBER(4)<br />HIREDATE DATE<br />SAL NUMBER(7,2)<br />COMM NUMBER(7,2)<br />DEPTNO NUMBER(2)</p>
				<p>6 sal &gt; 4000;</p>
				<p>DEPTNO EMPNO ENAME<br />---------- ---------- ----------<br />10 7839 KING</p>
				<p>41. SQLPlus中的快速复制和粘贴技巧(摘自<a href="http://www.cnoug.org/">http://www.cnoug.org/</a>)<br />1) 鼠标移至想要复制内容的开始 <br />2) 用右手食指按下鼠标左键 <br />3) 向想要复制内容的另一角拖动鼠标，与Word中选取内容的方法一样 <br />4) 内容选取完毕后（所选内容全部反显），鼠标左键按住不动，用右手中指按鼠标右键 <br />5) 这时，所选内容会自动复制到SQL*Plus环境的最后一行</p>
		</div>
<img src ="http://www.blogjava.net/superwei/aggbug/98963.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/superwei/" target="_blank">小辞猬</a> 2007-02-09 11:42 <a href="http://www.blogjava.net/superwei/articles/98963.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle cursor 游标(转载)</title><link>http://www.blogjava.net/superwei/articles/98821.html</link><dc:creator>小辞猬</dc:creator><author>小辞猬</author><pubDate>Thu, 08 Feb 2007 09:19:00 GMT</pubDate><guid>http://www.blogjava.net/superwei/articles/98821.html</guid><wfw:comment>http://www.blogjava.net/superwei/comments/98821.html</wfw:comment><comments>http://www.blogjava.net/superwei/articles/98821.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/superwei/comments/commentRss/98821.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/superwei/services/trackbacks/98821.html</trackback:ping><description><![CDATA[
		<div class="date"> </div>
		<table style="TABLE-LAYOUT: fixed">
				<tbody>
						<tr>
								<td>
										<div class="cnt">
												<p>
														<strong>
																<span style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt">游标</span>
														</strong>
														<span style="FONT-SIZE: 10.5pt">：<span></span></span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">用来查询数据库，获取记录集合（结果集）的指针，可以让开发者一次访问一行结果集，在每条结果集上作操作。<span></span></span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">
																<br />
																<strong>
																		<span style="FONT-WEIGHT: normal">分类</span>
																</strong>：</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">静态游标：<span><br />分为显式游标和隐式游标。</span></span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">REF游标：<br />是一种引用类型，类似于指针。</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">
														</span> </p>
												<p>
														<strong>
																<span style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt">显式游标</span>
														</strong>
														<span style="FONT-SIZE: 10.5pt">：<span></span></span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt"> CURSOR 游标名 ( 参数 ) [返回值类型] IS<br />  Select 语句</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">
																<br />生命周期：</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">1.打开游标(OPEN)<br />解析，绑定。。。不会从数据库检索数据</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">2.从游标中获取记录(FETCH INTO)<br />执行查询，返回结果集。通常定义局域变量作为从游标获取数据的缓冲区。</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">3.关闭游标(CLOSE)<br />完成游标处理，用户不能从游标中获取行。还可以重新打开。</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">
																<br />选项：参数和返回类型</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">
																<br />set serveroutput on<br />declare<br /> cursor emp_cur ( p_deptid in number) is <br />select * from employees where department_id = p_deptid;</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">l_emp employees%rowtype;<br />begin<br /> dbms_output.put_line('Getting employees from department 30');<br />open emp_cur(30);<br /> loop<br />  fetch emp_cur into l_emp;<br />  exit when emp_cur%notfound;<br />  dbms_output.put_line('Employee id '|| l_emp.employee_id || ' is ');<br />  dbms_output.put_line(l_emp.first_name || ' ' || l_emp.last_name);<br /> end loop;<br /> close emp_cur;</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt"> dbms_output.put_line('Getting employees from department 90');<br />open emp_cur(90);<br /> loop<br />  fetch emp_cur into l_emp;<br />  exit when emp_cur%notfound;<br />  dbms_output.put_line('Employee id '|| l_emp.employee_id || ' is ');<br />  dbms_output.put_line(l_emp.first_name || ' ' || l_emp.last_name);<br /> end loop;<br /> close emp_cur;<br />end;<br />/</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">
														</span> </p>
												<p>
														<strong>
																<span style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt">隐式游标</span>
														</strong>
														<span style="FONT-SIZE: 10.5pt">：<span></span></span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">不用明确建立游标变量，分两种：<span><br />1.在PL/SQL中使用DML语言，使用ORACLE提供的名为SQL的隐示游标<br />2.CURSOR FOR LOOP，用于for loop 语句</span></span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">
																<br />1举例：</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">declare<br />begin<br /> update departments set department_name=department_name;<br /> --where 1=2;<br /> <br /> dbms_output.put_line('update '|| sql%rowcount ||' records');<br />end;<br />/</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">
																<br />2举例：</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">declare<br />begin<br /> for my_dept_rec in ( select department_name, department_id from departments)<br /> loop<br />  dbms_output.put_line(my_dept_rec.department_id || ' : ' || my_dept_rec.department_name);<br /> end loop;<br />end;<br />/</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">
																<br />3举例：</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">单独<span>select </span></span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">declare<br /> l_empno emp.EMPLOYEE_ID%type;<br />-- l_ename emp.ename%type;<br />begin<br /> select EMPLOYEE_ID    <br />  into l_empno<br /> from emp;<br /> --where rownum =1;<br /> dbms_output.put_line(l_empno);<br />end;<br />/<br />使用INTO获取值，只能返回一行。</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">
														</span> </p>
												<p>
														<strong>
																<span style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt">游标属性</span>
														</strong>
														<span style="FONT-SIZE: 10.5pt">：<span></span></span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">%FOUND：变量最后从游标中获取记录的时候，在结果集中找到了记录。<br />%NOTFOUND：变量最后从游标中获取记录的时候，在结果集中没有找到记录。<br />%ROWCOUNT：当前时刻已经从游标中获取的记录数量。<br />%ISOPEN：是否打开。</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">
																<br />Declare<br /> Cursor emps is<br /> Select * from employees where rownum&lt;6 order by 1;<br /> <br /> Emp employees%rowtype;<br /> Row number :=1;<br />Begin<br /> Open emps;<br /> Fetch emps into emp;<br /> <br /> Loop<br />  If emps%found then<br />   Dbms_output.put_line('Looping over record '||row|| ' of ' || emps%rowcount);<br />   Fetch emps into emp;<br />   Row := row + 1;<br />  Elsif emps%notfound then<br />   Exit;  ---exit loop, not IF<br />  End if;<br /> End loop;<br /> <br /> If emps%isopen then<br />  Close emps;<br /> End if;<br />End;<br />/</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">
														</span> </p>
												<p>
														<strong>
																<span style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt">显式和隐式游标的区别</span>
														</strong>
														<span style="FONT-SIZE: 10.5pt">：<span></span></span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">尽量使用隐式游标，避免编写附加的游标控制代码（声明，打开，获取，关闭），也不需要声明变量来保存从游标中获取的数据。<span></span></span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">
														</span> </p>
												<p>
														<strong>
																<span style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt">REF CURSOR游标</span>
														</strong>
														<span style="FONT-SIZE: 10.5pt">：<span></span></span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">动态游标，在运行的时候才能确定游标使用的查询。分类：<span><br />强类型（限制）REF CURSOR，规定返回类型 <br />弱类型（非限制）REF CURSOR，不规定返回类型，可以获取任何结果集。</span></span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">
																<br />TYPE ref_cursor_name IS REF CURSOR [RETURN return_type]</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">
																<br />Declare<br /> Type refcur_t is ref cursor;<br /> <br /> Type emp_refcur_t is ref cursor return employee%rowtype;<br />Begin<br /> Null;<br />End;<br />/</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">
																<br />强类型举例：</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt">declare<br /> --声明记录类型<br /> type emp_job_rec is record(<br />  employee_id number,<br />  employee_name varchar2(50),<br />  job_title varchar2(30)<br /> );<br /> --声明REF CURSOR，返回值为该记录类型<br /> type emp_job_refcur_type is ref cursor<br />  return emp_job_rec;<br /> --定义REF CURSOR游标的变量<br /> emp_refcur emp_job_refcur_type;</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt"> emp_job emp_job_rec;<br />begin<br /> open emp_refcur for<br />  select e.employee_id,<br />    e.first_name || ' ' ||e.last_name "employee_name",<br />    j.job_title<br />  from employees e, jobs j<br />  where e.job_id = j.job_id and rownum &lt; 11 order by 1;</span>
												</p>
												<p>
														<span style="FONT-SIZE: 10.5pt"> fetch emp_refcur into emp_job;<br /> while emp_refcur%found loop<br />  dbms_output.put_line(emp_job.employee_name || '''s job is ');<br />  dbms_output.put_line(emp_job.job_title);<br />  fetch emp_refcur into emp_job;<br /> end loop;<br />end;</span>
												</p>
										</div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/superwei/aggbug/98821.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/superwei/" target="_blank">小辞猬</a> 2007-02-08 17:19 <a href="http://www.blogjava.net/superwei/articles/98821.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>