﻿<?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-努力幸福-文章分类-Oracle</title><link>http://www.blogjava.net/ftqiuqiu/category/32267.html</link><description>猫和球的故事</description><language>zh-cn</language><lastBuildDate>Thu, 16 Apr 2009 05:29:54 GMT</lastBuildDate><pubDate>Thu, 16 Apr 2009 05:29:54 GMT</pubDate><ttl>60</ttl><item><title>Eclipse快捷键大全（转载）</title><link>http://www.blogjava.net/ftqiuqiu/articles/264879.html</link><dc:creator>球球</dc:creator><author>球球</author><pubDate>Fri, 10 Apr 2009 08:41:00 GMT</pubDate><guid>http://www.blogjava.net/ftqiuqiu/articles/264879.html</guid><wfw:comment>http://www.blogjava.net/ftqiuqiu/comments/264879.html</wfw:comment><comments>http://www.blogjava.net/ftqiuqiu/articles/264879.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ftqiuqiu/comments/commentRss/264879.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ftqiuqiu/services/trackbacks/264879.html</trackback:ping><description><![CDATA[<div class="postbody"><font size="2">Ctrl+1&nbsp;快速修复(最经典的快捷键,就不用多说了)<br />
Ctrl+D:&nbsp;删除当前行&nbsp;<br />
Ctrl+Alt+&#8595;&nbsp;复制当前行到下一行(复制增加)<br />
Ctrl+Alt+&#8593;&nbsp;复制当前行到上一行(复制增加)<br />
Alt+&#8595;&nbsp;当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)<br />
Alt+&#8593;&nbsp;当前行和上面一行交互位置(同上)<br />
Alt+&#8592;&nbsp;前一个编辑的页面<br />
Alt+&#8594;&nbsp;下一个编辑的页面(当然是针对上面那条来说了)<br />
Alt+Enter&nbsp;显示当前选择资源(工程,or&nbsp;文件&nbsp;or文件)的属性<br />
Shift+Enter&nbsp;在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)<br />
Shift+Ctrl+Enter&nbsp;在当前行插入空行(原理同上条)<br />
Ctrl+Q&nbsp;定位到最后编辑的地方<br />
Ctrl+L&nbsp;定位在某行&nbsp;(对于程序超过100的人就有福音了)<br />
Ctrl+M&nbsp;最大化当前的Edit或View&nbsp;(再按则反之)<br />
Ctrl+/&nbsp;注释当前行,再按则取消注释<br />
Ctrl+O&nbsp;快速显示&nbsp;OutLine<br />
Ctrl+T&nbsp;快速显示当前类的继承结构<br />
Ctrl+W&nbsp;关闭当前Editer<br />
Ctrl+K&nbsp;参照选中的Word快速定位到下一个<br />
Ctrl+E&nbsp;快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)<br />
Ctrl+/(小键盘)&nbsp;折叠当前类中的所有代码<br />
Ctrl+&#215;(小键盘)&nbsp;展开当前类中的所有代码<br />
Ctrl+Space&nbsp;代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代替)<br />
Ctrl+Shift+E&nbsp;显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作)<br />
Ctrl+J&nbsp;正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes&nbsp;line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)<br />
Ctrl+Shift+J&nbsp;反向增量查找(和上条相同,只不过是从后往前查)<br />
Ctrl+Shift+F4&nbsp;关闭所有打开的Editer<br />
Ctrl+Shift+X&nbsp;把当前选中的文本全部变味小写<br />
Ctrl+Shift+Y&nbsp;把当前选中的文本全部变为小写<br />
Ctrl+Shift+F&nbsp;格式化当前代码<br />
Ctrl+Shift+P&nbsp;定位到对于的匹配符(譬如{})&nbsp;(从前面定位后面时,光标要在匹配符里面,后面到前面,则反之)<br />
<br />
下面的快捷键是重构里面常用的,本人就自己喜欢且常用的整理一下(注:一般重构的快捷键都是Alt+Shift开头的了)<br />
Alt+Shift+R&nbsp;重命名&nbsp;(是我自己最爱用的一个了,尤其是变量和类的Rename,比手工方法能节省很多劳动力)<br />
Alt+Shift+M&nbsp;抽取方法&nbsp;(这是重构里面最常用的方法之一了,尤其是对一大堆泥团代码有用)<br />
Alt+Shift+C&nbsp;修改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定)<br />
Alt+Shift+L&nbsp;抽取本地变量(&nbsp;可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)<br />
Alt+Shift+F&nbsp;把Class中的local变量变为field变量&nbsp;(比较实用的功能)<br />
Alt+Shift+I&nbsp;合并变量(可能这样说有点不妥Inline)<br />
Alt+Shift+V&nbsp;移动函数和变量(不怎么常用)<br />
Alt+Shift+Z&nbsp;重构的后悔药(Undo)<br />
<br />
编辑<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
全局&nbsp;查找并替换&nbsp;Ctrl+F&nbsp;<br />
文本编辑器&nbsp;查找上一个&nbsp;Ctrl+Shift+K&nbsp;<br />
文本编辑器&nbsp;查找下一个&nbsp;Ctrl+K&nbsp;<br />
全局&nbsp;撤销&nbsp;Ctrl+Z&nbsp;<br />
全局&nbsp;复制&nbsp;Ctrl+C&nbsp;<br />
全局&nbsp;恢复上一个选择&nbsp;Alt+Shift+&#8595;&nbsp;<br />
全局&nbsp;剪切&nbsp;Ctrl+X&nbsp;<br />
全局&nbsp;快速修正&nbsp;Ctrl1+1&nbsp;<br />
全局&nbsp;内容辅助&nbsp;Alt+/&nbsp;<br />
全局&nbsp;全部选中&nbsp;Ctrl+A&nbsp;<br />
全局&nbsp;删除&nbsp;Delete&nbsp;<br />
全局&nbsp;上下文信息&nbsp;Alt+？<br />
Alt+Shift+?<br />
Ctrl+Shift+Space&nbsp;<br />
Java编辑器&nbsp;显示工具提示描述&nbsp;F2&nbsp;<br />
Java编辑器&nbsp;选择封装元素&nbsp;Alt+Shift+&#8593;&nbsp;<br />
Java编辑器&nbsp;选择上一个元素&nbsp;Alt+Shift+&#8592;&nbsp;<br />
Java编辑器&nbsp;选择下一个元素&nbsp;Alt+Shift+&#8594;&nbsp;<br />
文本编辑器&nbsp;增量查找&nbsp;Ctrl+J&nbsp;<br />
文本编辑器&nbsp;增量逆向查找&nbsp;Ctrl+Shift+J&nbsp;<br />
全局&nbsp;粘贴&nbsp;Ctrl+V&nbsp;<br />
全局&nbsp;重做&nbsp;Ctrl+Y&nbsp;<br />
<br />
&nbsp;<br />
查看<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
全局&nbsp;放大&nbsp;Ctrl+=&nbsp;<br />
全局&nbsp;缩小&nbsp;Ctrl+-&nbsp;<br />
<br />
&nbsp;<br />
窗口<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
全局&nbsp;激活编辑器&nbsp;F12&nbsp;<br />
全局&nbsp;切换编辑器&nbsp;Ctrl+Shift+W&nbsp;<br />
全局&nbsp;上一个编辑器&nbsp;Ctrl+Shift+F6&nbsp;<br />
全局&nbsp;上一个视图&nbsp;Ctrl+Shift+F7&nbsp;<br />
全局&nbsp;上一个透视图&nbsp;Ctrl+Shift+F8&nbsp;<br />
全局&nbsp;下一个编辑器&nbsp;Ctrl+F6&nbsp;<br />
全局&nbsp;下一个视图&nbsp;Ctrl+F7&nbsp;<br />
全局&nbsp;下一个透视图&nbsp;Ctrl+F8&nbsp;<br />
文本编辑器&nbsp;显示标尺上下文菜单&nbsp;Ctrl+W&nbsp;<br />
全局&nbsp;显示视图菜单&nbsp;Ctrl+F10&nbsp;<br />
全局&nbsp;显示系统菜单&nbsp;Alt+-&nbsp;<br />
<br />
&nbsp;<br />
导航<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
Java编辑器&nbsp;打开结构&nbsp;Ctrl+F3&nbsp;<br />
全局&nbsp;打开类型&nbsp;Ctrl+Shift+T&nbsp;<br />
全局&nbsp;打开类型层次结构&nbsp;F4&nbsp;<br />
全局&nbsp;打开声明&nbsp;F3&nbsp;<br />
全局&nbsp;打开外部javadoc&nbsp;Shift+F2&nbsp;<br />
全局&nbsp;打开资源&nbsp;Ctrl+Shift+R&nbsp;<br />
全局&nbsp;后退历史记录&nbsp;Alt+&#8592;&nbsp;<br />
全局&nbsp;前进历史记录&nbsp;Alt+&#8594;&nbsp;<br />
全局&nbsp;上一个&nbsp;Ctrl+,&nbsp;<br />
全局&nbsp;下一个&nbsp;Ctrl+.&nbsp;<br />
Java编辑器&nbsp;显示大纲&nbsp;Ctrl+O&nbsp;<br />
全局&nbsp;在层次结构中打开类型&nbsp;Ctrl+Shift+H&nbsp;<br />
全局&nbsp;转至匹配的括号&nbsp;Ctrl+Shift+P&nbsp;<br />
全局&nbsp;转至上一个编辑位置&nbsp;Ctrl+Q&nbsp;<br />
Java编辑器&nbsp;转至上一个成员&nbsp;Ctrl+Shift+&#8593;&nbsp;<br />
Java编辑器&nbsp;转至下一个成员&nbsp;Ctrl+Shift+&#8595;&nbsp;<br />
文本编辑器&nbsp;转至行&nbsp;Ctrl+L&nbsp;<br />
<br />
&nbsp;<br />
搜索<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
全局&nbsp;出现在文件中&nbsp;Ctrl+Shift+U&nbsp;<br />
全局&nbsp;打开搜索对话框&nbsp;Ctrl+H&nbsp;<br />
全局&nbsp;工作区中的声明&nbsp;Ctrl+G&nbsp;<br />
全局&nbsp;工作区中的引用&nbsp;Ctrl+Shift+G&nbsp;<br />
<br />
&nbsp;<br />
文本编辑<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
文本编辑器&nbsp;改写切换&nbsp;Insert&nbsp;<br />
文本编辑器&nbsp;上滚行&nbsp;Ctrl+&#8593;&nbsp;<br />
文本编辑器&nbsp;下滚行&nbsp;Ctrl+&#8595;&nbsp;<br />
<br />
&nbsp;<br />
文件<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
全局&nbsp;保存&nbsp;Ctrl+X&nbsp;<br />
Ctrl+S&nbsp;<br />
全局&nbsp;打印&nbsp;Ctrl+P&nbsp;<br />
全局&nbsp;关闭&nbsp;Ctrl+F4&nbsp;<br />
全局&nbsp;全部保存&nbsp;Ctrl+Shift+S&nbsp;<br />
全局&nbsp;全部关闭&nbsp;Ctrl+Shift+F4&nbsp;<br />
全局&nbsp;属性&nbsp;Alt+Enter&nbsp;<br />
全局&nbsp;新建&nbsp;Ctrl+N&nbsp;<br />
<br />
&nbsp;<br />
项目<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
全局&nbsp;全部构建&nbsp;Ctrl+B&nbsp;<br />
<br />
&nbsp;<br />
源代码<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
Java编辑器&nbsp;格式化&nbsp;Ctrl+Shift+F&nbsp;<br />
Java编辑器&nbsp;取消注释&nbsp;Ctrl+\&nbsp;<br />
Java编辑器&nbsp;注释&nbsp;Ctrl+/&nbsp;<br />
Java编辑器&nbsp;添加导入&nbsp;Ctrl+Shift+M&nbsp;<br />
Java编辑器&nbsp;组织导入&nbsp;Ctrl+Shift+O&nbsp;<br />
Java编辑器&nbsp;使用try/catch块来包围&nbsp;未设置，太常用了，所以在这里列出,建议自己设置。<br />
也可以使用Ctrl+1自动修正。&nbsp;<br />
<br />
&nbsp;<br />
运行<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
全局&nbsp;单步返回&nbsp;F7&nbsp;<br />
全局&nbsp;单步跳过&nbsp;F6&nbsp;<br />
全局&nbsp;单步跳入&nbsp;F5&nbsp;<br />
全局&nbsp;单步跳入选择&nbsp;Ctrl+F5&nbsp;<br />
全局&nbsp;调试上次启动&nbsp;F11&nbsp;<br />
全局&nbsp;继续&nbsp;F8&nbsp;<br />
全局&nbsp;使用过滤器单步执行&nbsp;Shift+F5&nbsp;<br />
全局&nbsp;添加/去除断点&nbsp;Ctrl+Shift+B&nbsp;<br />
全局&nbsp;显示&nbsp;Ctrl+D&nbsp;<br />
全局&nbsp;运行上次启动&nbsp;Ctrl+F11&nbsp;<br />
全局&nbsp;运行至行&nbsp;Ctrl+R&nbsp;<br />
全局&nbsp;执行&nbsp;Ctrl+U&nbsp;<br />
<br />
&nbsp;<br />
重构<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
全局&nbsp;撤销重构&nbsp;Alt+Shift+Z&nbsp;<br />
全局&nbsp;抽取方法&nbsp;Alt+Shift+M&nbsp;<br />
全局&nbsp;抽取局部变量&nbsp;Alt+Shift+L&nbsp;<br />
全局&nbsp;内联&nbsp;Alt+Shift+I&nbsp;<br />
全局&nbsp;移动&nbsp;Alt+Shift+V&nbsp;<br />
全局&nbsp;重命名&nbsp;Alt+Shift+R&nbsp;<br />
全局&nbsp;重做&nbsp;Alt+Shift+Y</font></div>
<img src ="http://www.blogjava.net/ftqiuqiu/aggbug/264879.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ftqiuqiu/" target="_blank">球球</a> 2009-04-10 16:41 <a href="http://www.blogjava.net/ftqiuqiu/articles/264879.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle中ESCAPE关键字用法</title><link>http://www.blogjava.net/ftqiuqiu/articles/263183.html</link><dc:creator>球球</dc:creator><author>球球</author><pubDate>Tue, 31 Mar 2009 09:26:00 GMT</pubDate><guid>http://www.blogjava.net/ftqiuqiu/articles/263183.html</guid><wfw:comment>http://www.blogjava.net/ftqiuqiu/comments/263183.html</wfw:comment><comments>http://www.blogjava.net/ftqiuqiu/articles/263183.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ftqiuqiu/comments/commentRss/263183.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ftqiuqiu/services/trackbacks/263183.html</trackback:ping><description><![CDATA[<p>定义：escape关键字经常用于使某些特殊字符，如通配符：'%','_'转义为它们原</p>
<p>来的字符的意义，被定义的转义字符通常使用'\',但是也可以使用其他的符号。</p>
<p>实例：</p>
<p>SQL&gt; select * from t11 where name like '%_%';</p>
<p>NAME<br />
----------<br />
aa_a<br />
aaa<br />
<br />
SQL&gt; select * from t11 where name like '%\_%' escape '\';</p>
<p>NAME<br />
----------<br />
aa_a</p>
<p>注意：如果是 '/' 作为检索字符, 必须 用 '/' 作为转义符, 正斜扛也一样.<br />
select * from wan_test where psid like '%//%' escape '/'</p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/ftqiuqiu/aggbug/263183.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ftqiuqiu/" target="_blank">球球</a> 2009-03-31 17:26 <a href="http://www.blogjava.net/ftqiuqiu/articles/263183.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle中的DECODE函数</title><link>http://www.blogjava.net/ftqiuqiu/articles/263170.html</link><dc:creator>球球</dc:creator><author>球球</author><pubDate>Tue, 31 Mar 2009 08:48:00 GMT</pubDate><guid>http://www.blogjava.net/ftqiuqiu/articles/263170.html</guid><wfw:comment>http://www.blogjava.net/ftqiuqiu/comments/263170.html</wfw:comment><comments>http://www.blogjava.net/ftqiuqiu/articles/263170.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ftqiuqiu/comments/commentRss/263170.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ftqiuqiu/services/trackbacks/263170.html</trackback:ping><description><![CDATA[Decode： <br />
　　（指令解码）由于X86指令的长度不一致，必须用一个单元进行"翻译"，真正的内核按翻译后要求来工作。<br />
　　---------------------------------------------------------------------------------------------------------------------------<br />
<br />
　　DECODE函数<br />
<br />
　　DECODE是Oracle公司独家提供的功能，它是一个功能很强的函数。它虽然不是SQL的标准，但对于性能非常有用。到目前，其他的数据库供应商还不能提供类似DECODE的功能，甚至有的数据库的供应商批评Oracle的SQL不标准。实际上，这种批评有些片面或不够水平。就象有些马车制造商抱怨亨利。福特的&#8220;马车&#8221;不标准一样。<br />
　　1 DECODE 中的if-then-else逻辑<br />
　　在逻辑编程中，经常用到If &#8211; Then &#8211;Else 进行逻辑判断。在DECODE的语法中，实际上就是这样的逻辑处理过程。它的语法如下：<br />
　　DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )<br />
　　Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果。当每个value值被测试，如果value的值为if1，Decode 函数的结果是then1；如果value等于if2，Decode函数结果是then2；等等。事实上，可以给出多个if/then 配对。如果value结果不等于给出的任何配对时，Decode 结果就返回else 。<br />
　　需要注意的是，这里的if、then及else 都可以是函数或计算表达式。<br />
　　2 DECODE 的简单例子<br />
　　Oracle系统中就有许多数据字典是使用decode 思想设计的，比如记录会话信息的V$SESSION数据字典视图就是这样。我们从《Oracle8i/9i Reference》资料中了解到，当用户登录成功后在V$SESSION中就有该用户的相应记录，但用户所进行的命令操作在该视图中只记录命令的代码（0—没有任何操作，2—Insert&#8230;），而不是具体的命令关键字。因此，我们需要了解当前各个用户的名字及他们所进行的操作时，要用下面命令才能得到详细的结果：<br />
　　select sid,serial#,username,<br />
　　DECODE(command,<br />
　　0,&#8217;None&#8217;,<br />
　　2,&#8217;Insert&#8217;,<br />
　　3,&#8217;Select&#8217;,<br />
　　6,&#8217;Update&#8217;,<br />
　　7,&#8217;Delete&#8217;,<br />
　　8,&#8217;Drop&#8217;,<br />
　　&#8216;Other&#8217;) cmmand<br />
　　from v$session where username is not null;<br />
　　3 DECODE实现表的转置<br />
　　数据库中的表是由列和行构成的一个二维表。一般列在任何数据库中都是有限的数量，而行的变化较大，如果表很大，行的数量可能大上千万行。同一列的不同行可能有不同的值，而且不是预先定义的。<br />
　　例:住房公积金报表置换实例：<br />
　　1.各个单位在本地经办行进行开户，开户就是将单位的基本信息和职工信息的进行登记；<br />
　　2.每月各个单位的会计到经办行交缴本单位的所有职工的住房公积金，系统记录有每个职工的交缴明细并在每条记录上记录有经办行的代码；<br />
　　3.每月、季、半年及年终都要求将经办行 变为&#8220;列&#8221;给出个月的明细报表：<br />
　　经办行：城西区 城东区 <br />
　　月份：<br />
　　2001.01 xxxx1.xx xxxxx2.xx <br />
　　2001.02 xxxx3.xx xxxxx4.xx <br />
　　。 。 。 。 。 。<br />
　　原来的数据顺序是：<br />
　　城西区2001.01 xxxxx1.xx<br />
　　城东区2001.01 xxxxx2.xx<br />
　　城西区2001.02 xxxxx3.xx<br />
　　城东区2001.02 xxxxx4.xx<br />
　　住房公积金系统记录职工的每月交缴名细的pay_lst表结构是：<br />
　　bank_code varchar2(6)NOT NULL, -- 经办行代码<br />
　　acc_no varchar2(15) not null, -- 单位代码(单位帐号)<br />
　　emp_acc_no varchar2(20) not null, -- 职工帐号<br />
　　tran_date date not null, -- 交缴日期<br />
　　tran_val Number(7,2) not null, -- 交缴额 <br />
　　sys_date date default sysdate, --系统日期<br />
　　oper_id varchar2(10) --操作员代码<br />
　　这样的表结构，一般按照将经办行作为行(row)进行统计是很容易的，但是如果希望将经办行变为列(column)这样的格式来输出就有困难。如果用DECODE函数来处理则变得很简单：<br />
　　我们创建一个视图来对目前的pay_lst表进行查询。将经办行代码变为一些具体的经办行名称即可：<br />
　　CREATE OR REPLACE VIEW bank_date_lst AS<br />
　　Select to_char(tran_date,&#8217;yyyy.mm&#8217;),<br />
　　SUM( DECODE ( bank_code,&#8217;001&#8217;, tran_val,0 )) 城西区，<br />
　　SUM( DECODE ( bank_code,&#8217;002&#8217;, tran_val,0 )) 城南区，<br />
　　SUM( DECODE ( bank_code,&#8217;003&#8217;, tran_val,0 )) 城东区<br />
　　FROM pay_lst<br />
　　GROUP BY to_char(tran_date,&#8217;yyyy.mm&#8217;);<br />
　　建立视图后，可直接对该视图进行查询就可按照列显示出结果。<br />
<img src ="http://www.blogjava.net/ftqiuqiu/aggbug/263170.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ftqiuqiu/" target="_blank">球球</a> 2009-03-31 16:48 <a href="http://www.blogjava.net/ftqiuqiu/articles/263170.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>影响Oracle汉字显示的字符集问题</title><link>http://www.blogjava.net/ftqiuqiu/articles/208888.html</link><dc:creator>球球</dc:creator><author>球球</author><pubDate>Wed, 18 Jun 2008 07:20:00 GMT</pubDate><guid>http://www.blogjava.net/ftqiuqiu/articles/208888.html</guid><wfw:comment>http://www.blogjava.net/ftqiuqiu/comments/208888.html</wfw:comment><comments>http://www.blogjava.net/ftqiuqiu/articles/208888.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ftqiuqiu/comments/commentRss/208888.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ftqiuqiu/services/trackbacks/208888.html</trackback:ping><description><![CDATA[&nbsp;在国内外大中型数据库管理系统中，把ORACLE作为数据库管理平台的用户比较多。ORACLE 不论是数据库管理能力还是安全性都是无可非议的，但是，它在汉字信息的显示方面着实给中国用户带来不少麻烦，笔者多年从事ORACLE数据库管理，经常收到周围用户和外地用户反映有关ORACLE数据库汉字显示问题的求援信，主要现象是把汉字显示为不可识别的乱码，造成原来大量信息无法使用。本文将就这一问题产生的原因和解决办法进行一些探讨，供存在这方面问题的用户朋友参考。
<p><font color="#ffffff">----</font> <strong>1、原因分析</strong> </p>
<p><font color="#ffffff">----</font> 通过对用户反映情况的分析，发现字符集的设置不当是影响ORACLE数据库汉字显示的关键问题。那么字符集是怎么一会事呢？字符集是ORACLE 为适应不同语言文字显示而设定的。用于汉字显示的字符集主要有ZHS16CGB231280，US7ASCII，WE8ISO8859P1等。字符集不仅需在服务器端存在，而且客户端也必须有字符集注册。服务器端，字符集是在安装ORACLE时指定的，字符集登记信息存储在ORACLE数据库字典的V$NLS_PARAMETERS表中；客户端，字符集分两种情况，一种情况是sql*net 2.0以下版本，字符集是在windows的系统目录下的oracle.ini文件中登记的；另一种情况是sql*net 2.0以上（即32位）版本，字符集是在windows的系统注册表中登记的。要在客户端正确显示ORACLE 数据库汉字信息，首先必须使服务器端的字符集与客户端的字符集一致；其次是加载到ORACLE数据库的数据字符集必须与服务器指定字符集一致。因此，把用户存在的问题归纳分类，产生汉字显示异常的原因大致有以下几种： </p>
<p><font color="#ffffff">----</font> 1. 1服务器指定字符集与客户字符集不同，而与加载数据字符集一致。 </p>
<p><font color="#ffffff">----</font> 这种情况是最常见的，只要把客户端的字符集设置正确即可，解决办法见2.1。 </p>
<p><font color="#ffffff">----</font> 1. 2服务器指定字符集与客户字符集相同,与加载数据字符集不一致。 </p>
<p><font color="#ffffff">----</font> 这类问题一般发生在ORACLE版本升级或重新安装系统时选择了与原来服务器端不同的字符集，而恢复加载的备份数据仍是按原字符集卸出的场合,以及加载从其它使用不同字符集的ORACLE数据库卸出的数据的情况。这两种情况中，不管服务器端和客户端字符集是否一致都无法显示汉字。解决办法见2.2。 </p>
<p><font color="#ffffff">----</font> 1.3服务器指定字符集与客户字符集不同,与输入数据字符集不一致。 </p>
<p><font color="#ffffff">----</font> 这种情况是在客户端与服务器端字符集不一致时，从客户端输入了汉字信息。输入的这些信息即便是把客户端字符集更改正确，也无法显示汉字。解决办法见2.3。 </p>
<p><font color="#ffffff">----</font> <strong>2．解决办法</strong> </p>
<p><font color="#ffffff">----</font> 下面将分别对上述三种情况给出解决办法。为了叙述方便，假设客户端使用WINDOWS95/98环境，并已成功地配置了TCP/IP协议，安装了ORACLE的sql*net，sql*pluse产品。 </p>
<p><font color="#ffffff">----</font> 2.1 设置客户端字符集与服务器端字符集一致 </p>
<p><font color="#ffffff">----</font> 假设当前服务器端使用US7ASCII字符集。 </p>
<p><font color="#ffffff">----</font> （1）查看服务器端字符集 </p>
<p><font color="#ffffff">----</font> 通过客户端或服务器端的sql*plus登录ORACLE的一个合法用户，执行下列SQL语句： </p>
<pre>   SQL &gt; select * from V$NLS_PARAMETERS
parameter			            value
NLS_LANGUAGE                   AMERICAN
NLS_TERRITORY                  AMERICA
&#8230;.                             &#8230;.
NLS_CHARACTERSET               US7ASCII
NLS_SORT                       BINARY
NLS_NCHAR_CHARACTERSET         US7ASCII
</pre>
<p><font color="#ffffff">----</font> 从上述列表信息中可看出服务器端ORACLE数据库的字符集为'US7ASCII'。 </p>
<p><font color="#ffffff">----</font> （2）按照服务器端字符集对客户端进行配置 </p>
<p><font color="#ffffff">----</font> 配置方法有两种： </p>
<ul>
    <li>安装ORACLE的客户端软件时指定 </li>
</ul>
<p><font color="#ffffff">----</font> 在安装ORACLE的客户端产品软件时，选择与ORACLE服务端一致的字符集（本例为US7ASCII）即可。 </p>
<ul>
    <li>修改注册信息的方法 </li>
</ul>
<p><font color="#ffffff">----</font> 根据ORACLE 客户端所选sql*net 的版本分为下列两种情况： </p>
<p><font color="#ffffff">----</font> a. 客户端为 sql*net 2.0 以下版本 </p>
<p><font color="#ffffff">----</font> 进入Windows的系统目录，编辑oracle.ini文件，用US7ASCII替换原字符集，重新启动计算机，设置生效。 </p>
<p><font color="#ffffff">----</font> b. 客户端为 sql*net 2.0 以上版本 </p>
<p><font color="#ffffff">----</font> 在WIN98 下 运 行REGEDIT,第一步选HKEY_LOCAL_MACHINE,第二步选择SOFTWARE， 第三步选择 ORACLE， 第四步选择 NLS_LANG， 键 入 与服 务 器 端 相 同 的 字 符 集（本例为：AMERICAN_AMERICAN.US7ASCII）。 </p>
<p><font color="#ffffff">----</font> 2.2 强制加载数据字符集与服务器端字符集一致 </p>
<p><font color="#ffffff">----</font> 假设要加载数据从原ORACLE数据库卸出时的字符集为US7ASCII，当前ORACLE服务器字符集为WE8ISO8859P1。 </p>
<p><font color="#ffffff">----</font> 下面提供三种解决方法： </p>
<p><font color="#ffffff">----</font> （1） 服务器端重新安装ORACLE </p>
<p><font color="#ffffff">----</font> 在重新安装ORACLE 时选择与原卸出数据一致的字符集（本例为US7ASCII）。 </p>
<p><font color="#ffffff">----</font> 加载原卸出的数据。 </p>
<p><font color="#ffffff">----</font> 这种情况仅仅使用于空库和具有同一种字符集的数据。 </p>
<p><font color="#ffffff">----</font> （2）强行修改服务器端ORACLE当前字符集 </p>
<p><font color="#ffffff">----</font> 在用imp命令加载数据前，先在客户端用sql*plus登录system DBA用户，执行下列SQL语句进行当前ORACLE数据库字符集修改： </p>
<pre> SQL &gt; create database  character set US7ASCII
* create database character set US7ASCII
ERROR at line 1:
ORA-01031: insufficient privileges
</pre>
<p><font color="#ffffff">----</font> 你会发现语句执行过程中，出现上述错误提示信息，此时不用理会，实际上ORACLE数据库的字符集已被强行修改为US7ASCII，接着用imp命令装载数据。等数据装载完成以后，shutdown 数据库，再startup 数据库，用合法用户登录ORACLE数据库，在sql&gt;命令提示符下，运行select * from V$NLS_PARAMETERS，可以看到ORACLE数据库字符集已复原，这时再查看有汉字字符数据的表时，汉字已能被正确显示。 </p>
<p><font color="#ffffff">----</font> （3）利用数据格式转储，避开字符集限制 </p>
<p><font color="#ffffff">----</font> 这种方法主要用于加载外来ORACLE数据库的不同字符集数据。其方法如下： </p>
<p><font color="#ffffff">----</font> 先将数据加载到具有相同字符集的服务器上，然后用转换工具卸出为foxbase 格式或access格式数据库，再用转换工具转入到不同字符集的ORACLE数据库中，这样就避免了ORACLE字符集的困扰。目前数据库格式转换的工具很多,象power builder5.0以上版本提供的pipeline，Microsoft Access数据库提供的数据导入/导出功能等。转换方法参见有关资料说明。. </p>
<p><font color="#ffffff">----</font> 2.3匹配字符集替换汉字 </p>
<p><font color="#ffffff">----</font> 对于1.3提到的情况，没有很好的办法，只能先把客户端与服务器端字符集匹配一致后，根据原输入汉字的特征码替换汉字字符部分。 </p>
&nbsp;
   <img src ="http://www.blogjava.net/ftqiuqiu/aggbug/208888.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ftqiuqiu/" target="_blank">球球</a> 2008-06-18 15:20 <a href="http://www.blogjava.net/ftqiuqiu/articles/208888.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>外键未加索引和加索引的区别</title><link>http://www.blogjava.net/ftqiuqiu/articles/208887.html</link><dc:creator>球球</dc:creator><author>球球</author><pubDate>Wed, 18 Jun 2008 07:19:00 GMT</pubDate><guid>http://www.blogjava.net/ftqiuqiu/articles/208887.html</guid><wfw:comment>http://www.blogjava.net/ftqiuqiu/comments/208887.html</wfw:comment><comments>http://www.blogjava.net/ftqiuqiu/articles/208887.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ftqiuqiu/comments/commentRss/208887.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ftqiuqiu/services/trackbacks/208887.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 主要描述外键未加索引和加索引的区别：&nbsp;首先建相关表：create table dept (dept_id number(2), name varchar2(20));&nbsp;&nbsp;&nbsp; alter table dept add (constraint pk_dept primary key (dept_id));&nbsp;&nbsp;--在外键...&nbsp;&nbsp;<a href='http://www.blogjava.net/ftqiuqiu/articles/208887.html'>阅读全文</a><img src ="http://www.blogjava.net/ftqiuqiu/aggbug/208887.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ftqiuqiu/" target="_blank">球球</a> 2008-06-18 15:19 <a href="http://www.blogjava.net/ftqiuqiu/articles/208887.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle中的TOP（order by 结合使用rownum）</title><link>http://www.blogjava.net/ftqiuqiu/articles/208885.html</link><dc:creator>球球</dc:creator><author>球球</author><pubDate>Wed, 18 Jun 2008 07:15:00 GMT</pubDate><guid>http://www.blogjava.net/ftqiuqiu/articles/208885.html</guid><wfw:comment>http://www.blogjava.net/ftqiuqiu/comments/208885.html</wfw:comment><comments>http://www.blogjava.net/ftqiuqiu/articles/208885.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ftqiuqiu/comments/commentRss/208885.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ftqiuqiu/services/trackbacks/208885.html</trackback:ping><description><![CDATA[例子很简单 scott用户下，对emp表的操作<br />
<br />
主要通过这个例子来更好的理解关于order by 结合使用rownum的情况<br />
（可以理解为是通过对自己筛选的行按照要求进行排列）<br />
<br />
例子如下：<br />
select *<br />
from(<br />
&nbsp;&nbsp;select empno,job,mgr<br />
&nbsp;&nbsp;from emp<br />
&nbsp; &nbsp;order by mgr desc)a<br />
--此a代表的视为内嵌视图：inline view：并不是存储在DB中的命名视图<br />
where rownum&lt;=5;<br />
<br />
&nbsp; &nbsp;&nbsp;&nbsp;EMPNO JOB&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;MGR<br />
---------- --------- ----------<br />
&nbsp; &nbsp;&nbsp; &nbsp;7839 PRESIDENT<br />
&nbsp; &nbsp;&nbsp; &nbsp;7370 CLERK&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;7902<br />
&nbsp; &nbsp;&nbsp; &nbsp;7597 MANAGER&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;7839<br />
&nbsp; &nbsp;&nbsp; &nbsp;7699 MANAGER&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;7839<br />
&nbsp; &nbsp;&nbsp; &nbsp;7813 MANAGER&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;7839<br />
<br />
select *<br />
from(<br />
&nbsp; &nbsp; select empno,job,mgr<br />
&nbsp; &nbsp;from emp<br />
&nbsp; &nbsp; order by mgr)<br />
where rownum&lt;=5;<br />
&nbsp; &nbsp;&nbsp;&nbsp;EMPNO JOB&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;MGR<br />
---------- --------- ----------<br />
&nbsp; &nbsp;&nbsp; &nbsp;7788 ANALYST&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;7566<br />
&nbsp; &nbsp;&nbsp; &nbsp;7902 ANALYST&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;7566<br />
&nbsp; &nbsp;&nbsp; &nbsp;7499 SALESMAN&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;7698<br />
&nbsp; &nbsp;&nbsp; &nbsp;7521 SALESMAN&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;7698<br />
&nbsp; &nbsp;&nbsp; &nbsp;7844 SALESMAN&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;7698<br />
======================================================================<br />
以下结果是先返回表的前5条记录，然后按照order by mgr;进行默认的升序排列<br />
======================================================================<br />
select empno,job,mgr<br />
from emp<br />
where rownum&lt;=5<br />
order by mgr;<br />
&nbsp; &nbsp;&nbsp;&nbsp;EMPNO JOB&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;MGR<br />
---------- --------- ----------<br />
&nbsp; &nbsp;&nbsp; &nbsp;7499 SALESMAN&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;7698<br />
&nbsp; &nbsp;&nbsp; &nbsp;7521 SALESMAN&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;7698<br />
&nbsp; &nbsp;&nbsp; &nbsp;7654 SALESMAN&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;7698<br />
&nbsp; &nbsp;&nbsp; &nbsp;7597 MANAGER&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;7839<br />
&nbsp; &nbsp;&nbsp; &nbsp;7370 CLERK&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;7902<br />
========================<br />
原始数据：<br />
<br />
select empno,job,mgr<br />
from emp;<br />
<br />
EMPNO JOB&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;MGR<br />
----- --------- ----------<br />
7370 CLERK&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;7902<br />
7499 SALESMAN&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;7698<br />
7521 SALESMAN&nbsp; &nbsp;&nbsp; &nbsp; 7698<br />
7597 MANAGER&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;7839<br />
7654 SALESMAN&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;7698<br />
7699 MANAGER&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;7839<br />
7813 MANAGER&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;7839<br />
7788 ANALYST&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;7566<br />
7839 PRESIDENT<br />
7844 SALESMAN&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;7698<br />
7877 CLERK&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;7788<br />
7900 CLERK&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;7698<br />
7902 ANALYST&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;7566<br />
7965 CLERK&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;7782<br />
   <img src ="http://www.blogjava.net/ftqiuqiu/aggbug/208885.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ftqiuqiu/" target="_blank">球球</a> 2008-06-18 15:15 <a href="http://www.blogjava.net/ftqiuqiu/articles/208885.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle中的模糊查询 </title><link>http://www.blogjava.net/ftqiuqiu/articles/208884.html</link><dc:creator>球球</dc:creator><author>球球</author><pubDate>Wed, 18 Jun 2008 07:10:00 GMT</pubDate><guid>http://www.blogjava.net/ftqiuqiu/articles/208884.html</guid><wfw:comment>http://www.blogjava.net/ftqiuqiu/comments/208884.html</wfw:comment><comments>http://www.blogjava.net/ftqiuqiu/articles/208884.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ftqiuqiu/comments/commentRss/208884.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ftqiuqiu/services/trackbacks/208884.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p>ORACLE中的模糊查询是靠LIKE操作符来完成的。 <br />
现在我们来看一下LIKE操作符使用过程中的一些具体的问题 <br />
%：代表0个或者多个字符 <br />
_(下划线):代表一个字符 <br />
比如： <br />
(1) <br />
select ename from emp <br />
where ename like 'S%'; <br />
上面这个例子查询出的是以大写S为名字首字母的员工的员工姓名 <br />
(2) <br />
select ename from emp <br />
where ename like '_A%'; <br />
上面的这个例子中，匹配的就是名字中第二个字母为A的那些员工 </p>
<p>除了上面两种基本的用法外，我们可能还会碰到这样的问题，比如在员工的名字里就包含有&#8216;%&#8217; <br />
或者'_',那么我们该怎么办呢？ <br />
比如假如有一个员工的姓名为tom_cat，那么我们如何查询出和这个员工相关的一些信息呢？ <br />
我们的SQL语句应该这样来写； <br />
select * from emp <br />
where ename like '%\_%' escape '\'; <br />
<br />
关于escape的用法详见：博客中《Oracle中ESCAPE关键字用法》<a style="color: #800080" href="http://www.blogjava.net/ftqiuqiu/articles/263183.html"><u>http://www.blogjava.net/ftqiuqiu/articles/263183.html</u></a><br />
<br />
<br />
</p>
 <img src ="http://www.blogjava.net/ftqiuqiu/aggbug/208884.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ftqiuqiu/" target="_blank">球球</a> 2008-06-18 15:10 <a href="http://www.blogjava.net/ftqiuqiu/articles/208884.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 存储过程的基本语法</title><link>http://www.blogjava.net/ftqiuqiu/articles/208871.html</link><dc:creator>球球</dc:creator><author>球球</author><pubDate>Wed, 18 Jun 2008 06:54:00 GMT</pubDate><guid>http://www.blogjava.net/ftqiuqiu/articles/208871.html</guid><wfw:comment>http://www.blogjava.net/ftqiuqiu/comments/208871.html</wfw:comment><comments>http://www.blogjava.net/ftqiuqiu/articles/208871.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ftqiuqiu/comments/commentRss/208871.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ftqiuqiu/services/trackbacks/208871.html</trackback:ping><description><![CDATA[<div class="postbody">
<h1>oracle 存储过程的基本语法</h1>
<p><strong><br />
1.基本结构</strong> <br />
CREATE OR REPLACE PROCEDURE 存储过程名字<br />
(<br />
&nbsp;&nbsp;&nbsp; 参数1 IN NUMBER,<br />
&nbsp;&nbsp;&nbsp; 参数2 IN NUMBER<br />
) IS<br />
变量1 INTEGER :=0;<br />
变量2 DATE;<br />
BEGIN</p>
<p>END 存储过程名字<br />
<br />
<strong>2.SELECT INTO STATEMENT</strong><br />
&nbsp; 将select查询的结果存入到变量中，可以同时将多个列存储多个变量中，必须有一条<br />
&nbsp; 记录，否则抛出异常(如果没有记录抛出NO_DATA_FOUND)<br />
&nbsp; 例子： <br />
&nbsp; BEGIN<br />
&nbsp; SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx;<br />
&nbsp; EXCEPTION<br />
&nbsp; WHEN NO_DATA_FOUND THEN<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;xxxx;<br />
&nbsp; END;<br />
&nbsp; ...<br />
<br />
<strong>3.IF 判断</strong><br />
&nbsp; IF V_TEST=1 THEN<br />
&nbsp;&nbsp;&nbsp; BEGIN <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do something<br />
&nbsp;&nbsp;&nbsp; END;<br />
&nbsp; END IF;<br />
<br />
<strong>4.while 循环</strong><br />
&nbsp; WHILE V_TEST=1 LOOP<br />
&nbsp; BEGIN<br />
&nbsp;XXXX<br />
&nbsp; END;<br />
&nbsp; END LOOP;<br />
<strong><br />
5.变量赋值<br />
</strong>&nbsp; V_TEST := 123;<br />
<strong><br />
6.用for in 使用cursor</strong><br />
&nbsp; ...<br />
&nbsp; IS<br />
&nbsp; CURSOR cur IS SELECT * FROM xxx;<br />
&nbsp; BEGIN<br />
&nbsp;FOR cur_result in cur LOOP<br />
&nbsp;&nbsp;BEGIN<br />
&nbsp;&nbsp;&nbsp;V_SUM :=cur_result.列名1+cur_result.列名2<br />
&nbsp;&nbsp;END;<br />
&nbsp;END LOOP;<br />
&nbsp; END;<br />
<br />
<strong>7.带参数的cursor</strong><br />
&nbsp; CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID;<br />
&nbsp; OPEN C_USER(变量值);<br />
&nbsp; LOOP<br />
&nbsp;FETCH C_USER INTO V_NAME;<br />
&nbsp;EXIT FETCH C_USER%NOTFOUND;<br />
&nbsp;&nbsp;&nbsp; do something<br />
&nbsp; END LOOP;<br />
&nbsp; CLOSE C_USER;<br />
<br />
<strong>8.用pl/sql developer debug<br />
</strong>&nbsp; 连接数据库后建立一个Test WINDOW<br />
&nbsp; 在窗口输入调用SP的代码,F9开始debug,CTRL+N单步调试</p>
</div>
 <img src ="http://www.blogjava.net/ftqiuqiu/aggbug/208871.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ftqiuqiu/" target="_blank">球球</a> 2008-06-18 14:54 <a href="http://www.blogjava.net/ftqiuqiu/articles/208871.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Oracle中实现各种日期处理</title><link>http://www.blogjava.net/ftqiuqiu/articles/208869.html</link><dc:creator>球球</dc:creator><author>球球</author><pubDate>Wed, 18 Jun 2008 06:49:00 GMT</pubDate><guid>http://www.blogjava.net/ftqiuqiu/articles/208869.html</guid><wfw:comment>http://www.blogjava.net/ftqiuqiu/comments/208869.html</wfw:comment><comments>http://www.blogjava.net/ftqiuqiu/articles/208869.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ftqiuqiu/comments/commentRss/208869.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ftqiuqiu/services/trackbacks/208869.html</trackback:ping><description><![CDATA[<div class="postbody">TO_DATE格式 <br />
　　　 Day:　　　<br />
　　　 dd　　　 number　　　　 12 <br />
　　　 dy　　　 abbreviated　　fri　　　　　<br />
　　　 day　　　spelled out　　friday　　　　　　　　　　　　 <br />
　　　 ddspth　 spelled out,　 ordinal　 twelfth <br />
　　　 Month:　　<br />
　　　 mm　　　 number　　　　 03 <br />
　　　 mon　　　abbreviated　　mar <br />
　　　 month　　spelled out　　march　 <br />
　　　 Year:　　　　　　　　　　　　　 <br />
　　　 yy　　　 two　digits　　98 <br />
　　　 yyyy　　 four　digits　 1998　　 <br />
　　　　<br />
　　　 24小时格式下时间范围为： 0:00:00 - 23:59:59.... <br />
　　　 12小时格式下时间范围为： 1:00:00 - 12:59:59 ....　　 <br />
　　1. <br />
　　　 日期和字符转换函数用法（to_date,to_char）　　　 <br />
　　　<br />
　　2. <br />
　　　 select to_char( to_date(222,'J'),'Jsp')　from dual <br />
　　　　<br />
　　　 显示Two Hundred Twenty-Two <br />
　　　<br />
　　3. <br />
　　　 求某天是星期几 <br />
　　　 select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;　<br />
　　　 星期一 <br />
　　　 select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;　<br />
　　　 monday　　<br />
　　　 设置日期语言 <br />
　　　 ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN'; <br />
　　　 也可以这样 <br />
　　　 TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American') <br />
　　　<br />
　　4. <br />
　　　 两个日期间的天数 <br />
　　　 select floor(sysdate - to_date('20020405','yyyymmdd')) from dual; <br />
　　　<br />
　　5.　　 时间为null的用法 <br />
　　　 select id, active_date from table1 <br />
　　　　 UNION <br />
　　　 select 1, TO_DATE(null) from dual; <br />
　　　　<br />
　　　 注意要用TO_DATE(null) <br />
　　　<br />
　　6.　 <br />
　　　 a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd') <br />
　　　 那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。 <br />
　　　 所以，当时间需要精确的时候，觉得to_char还是必要的 <br />
　　7.　　　日期格式冲突问题 <br />
　　　　　　 输入的格式要看你安装的ORACLE字符集的类型, 比如: US7ASCII, date格式的类型就是: '01-Jan-01' <br />
　　　 alter system set NLS_DATE_LANGUAGE = American <br />
　　　　　　 alter session set NLS_DATE_LANGUAGE = American <br />
　　　 或者在to_date中写 <br />
　　　 select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;　<br />
　　　 注意我这只是举了NLS_DATE_LANGUAGE，当然还有很多， <br />
　　　 可查看 <br />
　　　 select * from nls_session_parameters <br />
　　　 select * from V$NLS_PARAMETERS <br />
　　　<br />
　　<br />
　　　日期和字符转换函数用法（to_date,to_char）<br />
　　　　　　 We overwrite NLS_DATE_FORMAT into different formats for the session.　<br />
　　　　　　 SQL&gt; alter session set nls_date_format = 'DD-MON-RR'; Session altered. <br />
　　　　　　 SQL&gt; set pagesize 0<br />
　　　　 SQL&gt; set linesize 130<br />
　　　　 SQL&gt; select * from nls_session_parameters; <br />
　　　　 NLS_LANGUAGE　　　　　　　　　 AMERICAN<br />
　　　　 NLS_TERRITORY　　　　　　　　　AMERICA<br />
　　　　 NLS_CURRENCY　　　　　　　　　 $<br />
　　　　 NLS_ISO_CURRENCY　　　　　　　 AMERICA<br />
　　　　 NLS_NUMERIC_CHARACTERS　　　　 .,<br />
　　　　 NLS_CALENDAR　　　　　　　　　 GREGORIAN<br />
　　　　 NLS_DATE_FORMAT　　　　　　　　DD-MON-RR<br />
　　　　 NLS_DATE_LANGUAGE　　　　　　　AMERICAN<br />
　　　　 NLS_SORT　　　　　　　　　　　 BINARY<br />
　　　　 NLS_TIME_FORMAT　　　　　　　　HH.MI.SSXFF AM<br />
　　　　 NLS_TIMESTAMP_FORMAT　　　　　 DD-MON-RR HH.MI.SSXFF AM<br />
　　　　 NLS_TIME_TZ_FORMAT　　　　　　 HH.MI.SSXFF AM TZH:TZM<br />
　　　　 NLS_TIMESTAMP_TZ_FORMAT　　　　DD-MON-RR HH.MI.SSXFF AM TZH:TZM<br />
　　　　 NLS_DUAL_CURRENCY　　　　　　　$<br />
　　　　 NLS_COMP　　　　　　　　　　　 BINARY<br />
　　<br />
　　　　 15 rows selected.<br />
　　　　　　　specify it in SQL statement: <br />
　　　　　　　<br />
　　　　　　SQL&gt; select to_date('03-SEP-1999','DD-MON-YYYY') from dual; <br />
　　　　　　 03-SEP-99<br />
　　　　　　SQL&gt; alter session set nls_date_format = 'MM-DD-YYYY'; <br />
　　　　　　　　 Session altered. <br />
　　　　　　　　 <br />
　　　　　　SQL&gt; select to_date('03-SEP-99','DD-MON-YY') from dual; <br />
　　　　　　　　 TO_DATE('0 <br />
　　　　　　　　 ---------- <br />
　　　　　　　　 09-03-1999　<br />
　　　　　　SQL&gt; alter session set nls_date_format = 'RRRR-MM-DD'; <br />
　　　　　　　　 Session altered.　<br />
　　　　　　　　 <br />
　　　　　　SQL&gt; select to_date('03-SEP-1999','DD-MON-YYYY') from dual; <br />
　　　　　　　　 TO_DATE('0 <br />
　　　　　　　　 ---------- <br />
　　　　　　　　 1999-09-03　<br />
　　　　　　　　 <br />
　　　　When we use TO_CHAR function, we get expected results of format from　current SQL statement:　<br />
　　　　　　SQL&gt; alter session set nls_date_format = 'MM-DD-YY';<br />
　　　　　　　　 Session altered.　<br />
　　　　　　SQL&gt; select to_char(sysdate,'dd-mm-yyyy') from dual;<br />
　　　　　　　　 TO_CHAR(SYSDATE,'DD-MM-YYYY')　<br />
　　　　　　　　 07-09-1999　<br />
　　　　　　SQL&gt; alter session set nls_date_format = 'RR-MON-DD'; <br />
　　　　　　　　 Session altered.　<br />
　　　　　　SQL&gt; select to_char(sysdate,'dd-mon-yy') from dual; <br />
　　　　　　　　 TO_CHAR(SYSDATE,'DD-MON-YY')　<br />
　　　　　　　　 07-sep-99　<br />
　　　　　　SQL&gt; select to_char(sysdate,'dd-Mon-yy') from dual; <br />
　　　　　　　　 TO_CHAR(SYSDATE,'DD-MON-YY')　<br />
　　　　　　　　 07-Sep-99 <br />
　　8. <br />
　　　 select count(*)　<br />
　　　 from ( select rownum-1 rnum　<br />
　　　　　　　from all_objects　<br />
　　　　　　　where rownum &lt;= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002- <br />
　　　　　　　02-01','yyyy-mm-dd')+1　<br />
　　　　　　 )　<br />
　　　 where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' ) <br />
　　　 not　<br />
　　　 in ( '1', '7' ) <br />
　　　　<br />
　　　 查找2002-02-28至2002-02-01间除星期一和七的天数 <br />
　　　 在前后分别调用DBMS_UTILITY.GET_TIME, 让后将结果相减(得到的是1/100秒, 而不是毫秒).　　<br />
　　　<br />
　　9. <br />
　　　 select months_between(to_date('01-31-1999','MM-DD-YYYY'),　<br />
　　　　 to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;　<br />
　　　 1 <br />
　　　　<br />
　　　 select months_between(to_date('02-01-1999','MM-DD-YYYY'),　　 <br />
　　　　 to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;　<br />
　　　　<br />
　　　 1.03225806451613 <br />
　　10.　　 Next_day的用法 <br />
　　　 Next_day(date, day) <br />
　　　　<br />
　　　 Monday-Sunday, for format code DAY　　　 <br />
　　　 Mon-Sun, for format code DY　　　　　<br />
　　　 1-7, for format code D　<br />
　　　<br />
　　11　　　 <br />
　　　 select to_char(sysdate,'hh:mi:ss') TIME from all_objects <br />
　　　 注意：第一条记录的TIME 与最后一行是一样的 <br />
　　　 可以建立一个函数来处理这个问题 <br />
　　　 create or replace function sys_date return date is　<br />
　　　 begin　<br />
　　　 return sysdate;　<br />
　　　 end;　<br />
　　　　<br />
　　　 select to_char(sys_date,'hh:mi:ss') from all_objects;　<br />
　　12. <br />
　　　　　　 获得小时数 <br />
　　　　　　　<br />
　　　　　　 SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 2:38:40') from offer <br />
　　　　　　 SQL&gt;　 select sysdate ,to_char(sysdate,'hh')　from dual; <br />
　　　　　　　<br />
　　　　　　 SYSDATE　　　　　　　TO_CHAR(SYSDATE,'HH') <br />
　　　　　　 -------------------- --------------------- <br />
　　　　　　 2003-10-13 19:35:21　07 <br />
　　　　　　　<br />
　　　　　　 SQL&gt;　 select sysdate ,to_char(sysdate,'hh24')　from dual; <br />
　　　　　　　<br />
　　　　　　 SYSDATE　　　　　　　TO_CHAR(SYSDATE,'HH24') <br />
　　　　　　 -------------------- ----------------------- <br />
　　　　　　 2003-10-13 19:35:21　19 <br />
　　　　　　　<br />
　　　　　　 获取年月日与此类似 <br />
　　13. <br />
　　　 年月日的处理 <br />
　　　 select older_date, <br />
　　　　　　　　newer_date, <br />
　　　　　　　　years, <br />
　　　　　　　　months, <br />
　　　　　　　　abs( <br />
　　　　　　　　　trunc( <br />
　　　　　　　　　　 newer_date- <br />
　　　　　　　　　　　　 add_months( older_date,years*12+months ) <br />
　　　　　　　　　　　 ) <br />
　　　　　　　　　) days <br />
　　　　　from ( select　<br />
　　　　　　 trunc(months_between( newer_date, older_date )/12) YEARS, <br />
　　　　　 mod(tr .......</div>
 <img src ="http://www.blogjava.net/ftqiuqiu/aggbug/208869.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ftqiuqiu/" target="_blank">球球</a> 2008-06-18 14:49 <a href="http://www.blogjava.net/ftqiuqiu/articles/208869.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle10g 初始化参数说明</title><link>http://www.blogjava.net/ftqiuqiu/articles/208868.html</link><dc:creator>球球</dc:creator><author>球球</author><pubDate>Wed, 18 Jun 2008 06:48:00 GMT</pubDate><guid>http://www.blogjava.net/ftqiuqiu/articles/208868.html</guid><wfw:comment>http://www.blogjava.net/ftqiuqiu/comments/208868.html</wfw:comment><comments>http://www.blogjava.net/ftqiuqiu/articles/208868.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ftqiuqiu/comments/commentRss/208868.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ftqiuqiu/services/trackbacks/208868.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 参数名： O7_DICTIONARY_ACCESSIBILITY类别：安全性和审计说明: 主要用于从 Oracle7 移植到 Oracle8i。如果该值为 TRUE, SYSTEM 权限 (如SELECT ANY TABLE) 将不限制对 SYS 方案中各对象的访问 (Oracle7 行为)。如果该值为FALSE, 只有被授予了 SELECT_CATALOG_ROLE, EXECUTE_C...&nbsp;&nbsp;<a href='http://www.blogjava.net/ftqiuqiu/articles/208868.html'>阅读全文</a><img src ="http://www.blogjava.net/ftqiuqiu/aggbug/208868.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ftqiuqiu/" target="_blank">球球</a> 2008-06-18 14:48 <a href="http://www.blogjava.net/ftqiuqiu/articles/208868.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>