﻿<?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-月挂夜中央</title><link>http://www.blogjava.net/wphmoon/</link><description>懒惰程序员</description><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 07:40:19 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 07:40:19 GMT</pubDate><ttl>60</ttl><item><title>网易微博的OAUTH认证开发（java版）</title><link>http://www.blogjava.net/wphmoon/archive/2011/02/16/344474.html</link><dc:creator>月挂夜中央</dc:creator><author>月挂夜中央</author><pubDate>Wed, 16 Feb 2011 13:31:00 GMT</pubDate><guid>http://www.blogjava.net/wphmoon/archive/2011/02/16/344474.html</guid><wfw:comment>http://www.blogjava.net/wphmoon/comments/344474.html</wfw:comment><comments>http://www.blogjava.net/wphmoon/archive/2011/02/16/344474.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/wphmoon/comments/commentRss/344474.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wphmoon/services/trackbacks/344474.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp;&nbsp;网易微博最近也开放了它的开发平台http://open.t.163.com，其中java版的oauth认证和新浪微博的很类似（貌似都是从twitter那边copy过来的）。但说句实话，网易java版的sdk和新浪微博的比起来，的确上手比较麻烦，里面提供的example都是把access token写死，作为参数，具体的代码如下：public&nb...&nbsp;&nbsp;<a href='http://www.blogjava.net/wphmoon/archive/2011/02/16/344474.html'>阅读全文</a><img src ="http://www.blogjava.net/wphmoon/aggbug/344474.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wphmoon/" target="_blank">月挂夜中央</a> 2011-02-16 21:31 <a href="http://www.blogjava.net/wphmoon/archive/2011/02/16/344474.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>springside3.*中log4j和java.util.concurrent的结合使用</title><link>http://www.blogjava.net/wphmoon/archive/2011/02/13/344206.html</link><dc:creator>月挂夜中央</dc:creator><author>月挂夜中央</author><pubDate>Sun, 13 Feb 2011 13:20:00 GMT</pubDate><guid>http://www.blogjava.net/wphmoon/archive/2011/02/13/344206.html</guid><wfw:comment>http://www.blogjava.net/wphmoon/comments/344206.html</wfw:comment><comments>http://www.blogjava.net/wphmoon/archive/2011/02/13/344206.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wphmoon/comments/commentRss/344206.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wphmoon/services/trackbacks/344206.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在springside3.*中的showcase案例中，有一个把log4j的日志存入数据库的演示，下面是我对这个案例的学习笔记。1、我们首先来看下log4j相关日志的配置：#Async&nbsp;Database&nbsp;Appender&nbsp;(Store&nbsp;business&n...&nbsp;&nbsp;<a href='http://www.blogjava.net/wphmoon/archive/2011/02/13/344206.html'>阅读全文</a><img src ="http://www.blogjava.net/wphmoon/aggbug/344206.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wphmoon/" target="_blank">月挂夜中央</a> 2011-02-13 21:20 <a href="http://www.blogjava.net/wphmoon/archive/2011/02/13/344206.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用XmemcachedClient设置缓存对象过期时间的问题</title><link>http://www.blogjava.net/wphmoon/archive/2011/01/21/343337.html</link><dc:creator>月挂夜中央</dc:creator><author>月挂夜中央</author><pubDate>Fri, 21 Jan 2011 08:18:00 GMT</pubDate><guid>http://www.blogjava.net/wphmoon/archive/2011/01/21/343337.html</guid><wfw:comment>http://www.blogjava.net/wphmoon/comments/343337.html</wfw:comment><comments>http://www.blogjava.net/wphmoon/archive/2011/01/21/343337.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wphmoon/comments/commentRss/343337.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wphmoon/services/trackbacks/343337.html</trackback:ping><description><![CDATA[前几天在做一个涉及到memcache的项目，使用XmemcachedClient来操作memcache，由于是一个季度的数据，保存数据时这样的<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">&nbsp;memcachedClient.set(key,&nbsp;expiredTime,&nbsp;value)</span></div>
其中设置了过期时间为90天<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;cacheExpireTime&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">60</span><span style="color: #000000">*</span><span style="color: #000000">60</span><span style="color: #000000">*</span><span style="color: #000000">24</span><span style="color: #000000">*</span><span style="color: #000000">90</span><span style="color: #000000">;</span></div>
结果就杯具了，保存后用get方法取时都是null；后来无意中把过期时间改成小于30天，就完全没有问题，经过谷歌大神的帮忙，终于发现了原因。<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">服务端的处理<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />时间处理源代码【memcached.c】如下：<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />#define&nbsp;REALTIME_MAXDELTA&nbsp;</span><span style="color: #000000">60</span><span style="color: #000000">*</span><span style="color: #000000">60</span><span style="color: #000000">*</span><span style="color: #000000">24</span><span style="color: #000000">*</span><span style="color: #000000">30</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;定义30天的秒数</span><span style="color: #008000"><br />
<img id="Codehighlighter1_150_719_Open_Image" onclick="this.style.display='none'; Codehighlighter1_150_719_Open_Text.style.display='none'; Codehighlighter1_150_719_Closed_Image.style.display='inline'; Codehighlighter1_150_719_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_150_719_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_150_719_Closed_Text.style.display='none'; Codehighlighter1_150_719_Open_Image.style.display='inline'; Codehighlighter1_150_719_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"  alt="" /></span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;rel_time_t&nbsp;realtime(</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;time_t&nbsp;exptime)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_150_719_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_150_719_Open_Text"><span style="color: #000000">{<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(exptime&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />
<img id="Codehighlighter1_227_515_Open_Image" onclick="this.style.display='none'; Codehighlighter1_227_515_Open_Text.style.display='none'; Codehighlighter1_227_515_Closed_Image.style.display='inline'; Codehighlighter1_227_515_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_227_515_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_227_515_Closed_Text.style.display='none'; Codehighlighter1_227_515_Open_Image.style.display='inline'; Codehighlighter1_227_515_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(exptime&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;REALTIME_MAXDELTA)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_227_515_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_227_515_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;超过30天，是绝对时间</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(exptime&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;process_started)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;小于进程启动日期</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;(rel_time_t)</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;(rel_time_t)(exptime&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;process_started);&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;返回进程启动之后的时间差</span><span style="color: #008000"><br />
<img id="Codehighlighter1_522_717_Open_Image" onclick="this.style.display='none'; Codehighlighter1_522_717_Open_Text.style.display='none'; Codehighlighter1_522_717_Closed_Image.style.display='inline'; Codehighlighter1_522_717_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_522_717_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_522_717_Closed_Text.style.display='none'; Codehighlighter1_522_717_Open_Image.style.display='inline'; Codehighlighter1_522_717_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_522_717_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_522_717_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;不超过30天，是相对时间</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;(rel_time_t)(exptime&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;current_time);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;exptime&nbsp;+&nbsp;(tvsec&nbsp;-&nbsp;process_started)</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span></div>
原来超过30天就自动转换成绝对时间，和进程启动时间比较，显然60*60*24*90小于启动日期的绝对数，所以对象一存入就过期了，肯定取不到数据。<br />
具体的问题请围观这篇文章：<a href="http://blog.sina.com.cn/s/blog_539d361e0100nc9h.html">http://blog.sina.com.cn/s/blog_539d361e0100nc9h.html</a>。
<img src ="http://www.blogjava.net/wphmoon/aggbug/343337.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wphmoon/" target="_blank">月挂夜中央</a> 2011-01-21 16:18 <a href="http://www.blogjava.net/wphmoon/archive/2011/01/21/343337.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>xfire的webservice方法中date类型参数为null出现空指针错误的问题</title><link>http://www.blogjava.net/wphmoon/archive/2010/02/24/313758.html</link><dc:creator>月挂夜中央</dc:creator><author>月挂夜中央</author><pubDate>Wed, 24 Feb 2010 01:12:00 GMT</pubDate><guid>http://www.blogjava.net/wphmoon/archive/2010/02/24/313758.html</guid><wfw:comment>http://www.blogjava.net/wphmoon/comments/313758.html</wfw:comment><comments>http://www.blogjava.net/wphmoon/archive/2010/02/24/313758.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/wphmoon/comments/commentRss/313758.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wphmoon/services/trackbacks/313758.html</trackback:ping><description><![CDATA[最近在使用xfire开发webservice，发现一个这样的问题，如果注册的webservice 方法中的参数有Date类型时，调用该方法时把Date型参数填入null，就会报空指针错误，这是xfire的一个bug，很可惜在xfire官方网站上最新版的xfire版本是1.2.6，在这个版本中问题仍然没有解决，而解决的方法在codeHaus的jira中其实发现了这个问题，这个问题主要出在org.codehaus.xfire.aegis.type.basic.DateTimeType的writeObject方法，在1.2.6中这个方法的代码是这样的：<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;writeObject(Object&nbsp;object,&nbsp;MessageWriter&nbsp;writer,&nbsp;MessageContext&nbsp;context)<br />
<img id="Codehighlighter1_89_219_Open_Image" onclick="this.style.display='none'; Codehighlighter1_89_219_Open_Text.style.display='none'; Codehighlighter1_89_219_Closed_Image.style.display='inline'; Codehighlighter1_89_219_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_89_219_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_89_219_Closed_Text.style.display='none'; Codehighlighter1_89_219_Open_Image.style.display='inline'; Codehighlighter1_89_219_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_89_219_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_89_219_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Calendar&nbsp;c&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Calendar.getInstance();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.setTime((Date)&nbsp;object);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.writeValue(format.format(c));<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
修改过后的代码如下：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;writeObject(Object&nbsp;object,&nbsp;MessageWriter&nbsp;writer,<br />
<img id="Codehighlighter1_88_264_Open_Image" onclick="this.style.display='none'; Codehighlighter1_88_264_Open_Text.style.display='none'; Codehighlighter1_88_264_Closed_Image.style.display='inline'; Codehighlighter1_88_264_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_88_264_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_88_264_Closed_Text.style.display='none'; Codehighlighter1_88_264_Open_Image.style.display='inline'; Codehighlighter1_88_264_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageContext&nbsp;context)&nbsp;</span><span id="Codehighlighter1_88_264_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_88_264_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_112_225_Open_Image" onclick="this.style.display='none'; Codehighlighter1_112_225_Open_Text.style.display='none'; Codehighlighter1_112_225_Closed_Image.style.display='inline'; Codehighlighter1_112_225_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_112_225_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_112_225_Closed_Text.style.display='none'; Codehighlighter1_112_225_Open_Image.style.display='inline'; Codehighlighter1_112_225_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(object&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_112_225_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_112_225_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Calendar&nbsp;c&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Calendar.getInstance();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.setTime((Date)&nbsp;object);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.writeValue(format.format(c));<br />
<img id="Codehighlighter1_232_261_Open_Image" onclick="this.style.display='none'; Codehighlighter1_232_261_Open_Text.style.display='none'; Codehighlighter1_232_261_Closed_Image.style.display='inline'; Codehighlighter1_232_261_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_232_261_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_232_261_Closed_Text.style.display='none'; Codehighlighter1_232_261_Open_Image.style.display='inline'; Codehighlighter1_232_261_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_232_261_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_232_261_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.writeXsiNil();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
加了个对null的判断就好了。很不幸的是xfire现在变成了cxf，指望官方在新的xfire版本中改正这个bug是没戏了，大家还是自己改改用吧。
<img src ="http://www.blogjava.net/wphmoon/aggbug/313758.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wphmoon/" target="_blank">月挂夜中央</a> 2010-02-24 09:12 <a href="http://www.blogjava.net/wphmoon/archive/2010/02/24/313758.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle中in，not in和exists，not exists之间的区别</title><link>http://www.blogjava.net/wphmoon/archive/2009/01/07/250325.html</link><dc:creator>月挂夜中央</dc:creator><author>月挂夜中央</author><pubDate>Wed, 07 Jan 2009 07:03:00 GMT</pubDate><guid>http://www.blogjava.net/wphmoon/archive/2009/01/07/250325.html</guid><wfw:comment>http://www.blogjava.net/wphmoon/comments/250325.html</wfw:comment><comments>http://www.blogjava.net/wphmoon/archive/2009/01/07/250325.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/wphmoon/comments/commentRss/250325.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wphmoon/services/trackbacks/250325.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一直听到的都是说尽量用exists不要用in，因为exists只判断存在而in需要对比值，所以exists比较快，但看了看网上的一些东西才发现根本不是这么回事。<br />
下面这段是抄的<br />
Select * from T1 where x in ( select y from T2 )<br />
执行的过程相当于:<br />
select * <br />
&nbsp; from t1, ( select distinct y from t2 ) t2<br />
&nbsp;where t1.x = t2.y;<br />
<br />
select * from t1 where exists ( select null from t2 where y = x )<br />
执行的过程相当于:<br />
for x in ( select * from t1 )<br />
&nbsp;&nbsp; loop<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( exists ( select null from t2 where y = x.x )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; then <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OUTPUT THE RECORD<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if<br />
end loop<br />
<br />
从我的角度来说，in的方式比较直观，exists则有些绕，而且in可以用于各种子查询，而exists好像只用于关联子查询（其他子查询当然也可以用，可惜没意义）。<br />
由于exists是用loop的方式，所以，循环的次数对于exists影响最大，所以，外表要记录数少，内表就无所谓了，而in用的是hash join，所以内表如果小，整个查询的范围都会很小，如果内表很大，外表如果也很大就很慢了，这时候exists才真正的会快过in的方式。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下面这段还是抄的
<div><font face="宋体"><font size="2"><strong>not in 和not exists</strong><br />
如果查询语句使用了not in 那么内外表都进行全表扫描，没有用到索引；<br />
而not extsts 的子查询依然能用到表上的索引。<br />
所以无论那个表大，用not exists都比not in要快。</font></font></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 也就是说，in和exists需要具体情况具体分析，not in和not exists就不用分析了，尽量用not exists就好了。<br />
<img src ="http://www.blogjava.net/wphmoon/aggbug/250325.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wphmoon/" target="_blank">月挂夜中央</a> 2009-01-07 15:03 <a href="http://www.blogjava.net/wphmoon/archive/2009/01/07/250325.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何查看sql的执行计划</title><link>http://www.blogjava.net/wphmoon/archive/2009/01/07/250303.html</link><dc:creator>月挂夜中央</dc:creator><author>月挂夜中央</author><pubDate>Wed, 07 Jan 2009 04:00:00 GMT</pubDate><guid>http://www.blogjava.net/wphmoon/archive/2009/01/07/250303.html</guid><wfw:comment>http://www.blogjava.net/wphmoon/comments/250303.html</wfw:comment><comments>http://www.blogjava.net/wphmoon/archive/2009/01/07/250303.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wphmoon/comments/commentRss/250303.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wphmoon/services/trackbacks/250303.html</trackback:ping><description><![CDATA[在pl/sql developer中，直接写条sql，按F5，就可以调出执行计划，但在只有sql plus的情况下，只能用下面这个语句了，<br />
explain plan for select ....<br />
然后再来一句<br />
select * from table(dbms_xplan.display());<br />
就会出现一个类似下面的信息<br />
PLAN_TABLE_OUTPUT<br />
--------------------------------------------------------------------------------<br />
<br />
----------------------------------------------------------------------------<br />
| Id&nbsp; | Operation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Rows&nbsp; | Bytes | Cost&nbsp; |<br />
----------------------------------------------------------------------------<br />
|&nbsp;&nbsp; 0 | SELECT STATEMENT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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 />
|&nbsp;&nbsp; 1 |&nbsp; NESTED LOOPS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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 />
|&nbsp;&nbsp; 2 |&nbsp;&nbsp; TABLE ACCESS FULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | AC01&nbsp;&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 />
|&nbsp;&nbsp; 3 |&nbsp;&nbsp; TABLE ACCESS BY INDEX ROWID| AB01&nbsp;&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 />
|&nbsp;&nbsp; 4 |&nbsp;&nbsp;&nbsp; INDEX UNIQUE SCAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | PK_AB01&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br />
----------------------------------------------------------------------------<br />
<br />
<br />
PLAN_TABLE_OUTPUT<br />
--------------------------------------------------------------------------------<br />
Note: rule based optimization, PLAN_TABLE' is old version<br />
<br />
就能看到执行计划了。<br />
<br />
<img src ="http://www.blogjava.net/wphmoon/aggbug/250303.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wphmoon/" target="_blank">月挂夜中央</a> 2009-01-07 12:00 <a href="http://www.blogjava.net/wphmoon/archive/2009/01/07/250303.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>根据条件动态定义游标</title><link>http://www.blogjava.net/wphmoon/archive/2008/07/08/213330.html</link><dc:creator>月挂夜中央</dc:creator><author>月挂夜中央</author><pubDate>Tue, 08 Jul 2008 06:46:00 GMT</pubDate><guid>http://www.blogjava.net/wphmoon/archive/2008/07/08/213330.html</guid><wfw:comment>http://www.blogjava.net/wphmoon/comments/213330.html</wfw:comment><comments>http://www.blogjava.net/wphmoon/archive/2008/07/08/213330.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wphmoon/comments/commentRss/213330.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wphmoon/services/trackbacks/213330.html</trackback:ping><description><![CDATA[在oracle的函数或过程中，有时候需要根据传进来的参数或者别的什么原因动态定义游标，那么该怎么定义呢，方法如下：<br />
首先，定义游标变量：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">type&nbsp;&nbsp;&nbsp;cur&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">is</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;ref&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">cursor</span><span style="color: #000000">;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />cv_name&nbsp;cur;</span></div>
然后，动态定义游标：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">If</span><span style="color: #000000">&nbsp;length(v_1)</span><span style="color: #808080">&gt;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">Then</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">Open</span><span style="color: #000000">&nbsp;cv_name&nbsp;</span><span style="color: #0000ff">For</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">select&nbsp;column1&nbsp;from&nbsp;table1&nbsp;where&nbsp;column1&nbsp;=&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #808080">||</span><span style="color: #000000">v_1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">Else</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">Open</span><span style="color: #000000">&nbsp;cv_name&nbsp;</span><span style="color: #0000ff">For</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">select&nbsp;column1&nbsp;from&nbsp;table1</span><span style="color: #ff0000">'</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">End</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">If</span><span style="color: #000000">;</span></div>
后面的就按游标的正常使用就好了。
<img src ="http://www.blogjava.net/wphmoon/aggbug/213330.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wphmoon/" target="_blank">月挂夜中央</a> 2008-07-08 14:46 <a href="http://www.blogjava.net/wphmoon/archive/2008/07/08/213330.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于oracle中的列使用别名后在sql中的操作</title><link>http://www.blogjava.net/wphmoon/archive/2008/03/20/187428.html</link><dc:creator>月挂夜中央</dc:creator><author>月挂夜中央</author><pubDate>Thu, 20 Mar 2008 02:47:00 GMT</pubDate><guid>http://www.blogjava.net/wphmoon/archive/2008/03/20/187428.html</guid><wfw:comment>http://www.blogjava.net/wphmoon/comments/187428.html</wfw:comment><comments>http://www.blogjava.net/wphmoon/archive/2008/03/20/187428.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/wphmoon/comments/commentRss/187428.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wphmoon/services/trackbacks/187428.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 在oracle中如果列在sql中操作，是很正常的事，比如：<br />
&nbsp;&nbsp;&nbsp; select col1,col2,col1+col2 from table1;<br />
&nbsp;&nbsp;&nbsp; 但如果使用了别名，情况就不同了：<br />
&nbsp;&nbsp;&nbsp; select col1 a,col2 b,a+b from table1;<br />
&nbsp;&nbsp;&nbsp; 会报以下的错误：<br />
&nbsp;&nbsp;&nbsp; ORA-00904: "B": invalid identifier<br />
&nbsp;&nbsp;&nbsp; 怎么解决呢，就是套一个select在外面：<br />
&nbsp;&nbsp;&nbsp; select a,b,a+b from (select col1 a,col2 b from table1);<br />
&nbsp;&nbsp;&nbsp; 这样就没有问题了。
<img src ="http://www.blogjava.net/wphmoon/aggbug/187428.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wphmoon/" target="_blank">月挂夜中央</a> 2008-03-20 10:47 <a href="http://www.blogjava.net/wphmoon/archive/2008/03/20/187428.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于oracle的dbms_output的两个小问题</title><link>http://www.blogjava.net/wphmoon/archive/2008/02/19/180627.html</link><dc:creator>月挂夜中央</dc:creator><author>月挂夜中央</author><pubDate>Tue, 19 Feb 2008 03:37:00 GMT</pubDate><guid>http://www.blogjava.net/wphmoon/archive/2008/02/19/180627.html</guid><wfw:comment>http://www.blogjava.net/wphmoon/comments/180627.html</wfw:comment><comments>http://www.blogjava.net/wphmoon/archive/2008/02/19/180627.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/wphmoon/comments/commentRss/180627.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wphmoon/services/trackbacks/180627.html</trackback:ping><description><![CDATA[1、如果dbms_output.put_line的内容不能显示，需要在命令行中先敲入set serveroutput on;只要敲一遍就好，之后dbms_output.put_line的内容就能显示出来了；<br />
2、dbms_output.put_line每行只能显示255个字符，超过了就会报错，报错内容如下<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORA-20000: ORU-10028: line length overflow, limit of 255 chars per line<br />
解决这个问题的方法如下：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">declare</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;v_result&nbsp;</span><span style="font-weight: bold; color: #000000">Varchar2</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">1000</span><span style="color: #000000">);</span><span style="color: #008080">--</span><span style="color: #008080">这是需要打印出结果的字符串</span><span style="color: #008080"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;v_pos&nbsp;</span><span style="font-weight: bold; color: #000000">Number</span><span style="color: #000000">&nbsp;:</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">;</span><span style="color: #008080">--</span><span style="color: #008080">用来记录v_result每行开始字符的位置</span><span style="color: #008080"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">WHILE</span><span style="color: #000000">&nbsp;v_pos</span><span style="color: #808080">&lt;=</span><span style="color: #000000">&nbsp;LENGTH(v_result)&nbsp;LOOP<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBMS_OUTPUT.PUT_LINE(SUBSTR(v_result,&nbsp;v_pos,&nbsp;</span><span style="font-weight: bold; color: #800000">200</span><span style="color: #000000">));<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v_pos:</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;v_pos</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">200</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">END</span><span style="color: #000000">&nbsp;LOOP;</span></div>
这样就能打印超过255长度的字符串，超过200长度的自动换行打印出来
 <img src ="http://www.blogjava.net/wphmoon/aggbug/180627.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wphmoon/" target="_blank">月挂夜中央</a> 2008-02-19 11:37 <a href="http://www.blogjava.net/wphmoon/archive/2008/02/19/180627.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>