﻿<?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/kebo/</link><description>往事随风......前事如梦......
</description><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 19:00:08 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 19:00:08 GMT</pubDate><ttl>60</ttl><item><title>一个sql写法</title><link>http://www.blogjava.net/kebo/archive/2009/01/05/249993.html</link><dc:creator>kebo</dc:creator><author>kebo</author><pubDate>Mon, 05 Jan 2009 13:55:00 GMT</pubDate><guid>http://www.blogjava.net/kebo/archive/2009/01/05/249993.html</guid><wfw:comment>http://www.blogjava.net/kebo/comments/249993.html</wfw:comment><comments>http://www.blogjava.net/kebo/archive/2009/01/05/249993.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/kebo/comments/commentRss/249993.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kebo/services/trackbacks/249993.html</trackback:ping><description><![CDATA[<p>有人问这样的sql该怎么实现：<br />表数据和结构<br />    CODE NAME    B01    S01    B02    S02<br />    1          张三       数学    80  <br />    1          张三                            语文    75<br />    2          王五       数学    70  <br />    2          王五    <br />    3          李四       数学    50  <br />    3          李四                           语文    88</p>
		<p>希望查询出如下结果：<br />    CODE SUM_STR(NAME)    B01    SUM_STR(S01)    B02    SUM_STR(S02)<br />    1                张三                    数学                80           语文            75<br />    2                王五                    数学                70  <br />    3                李四                    数学                50           语文             88<br />这个问题可以采用自定义的聚集函数来实现：<br /></p>
		<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" />
				<span style="COLOR: #0000ff">create</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #808080">or</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #ff00ff">replace</span>
				<span style="COLOR: #000000"> type strcat_type </span>
				<span style="COLOR: #0000ff">as</span>
				<span style="COLOR: #000000"> object (<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    cat_string </span>
				<span style="FONT-WEIGHT: bold; COLOR: #000000">varchar2</span>
				<span style="COLOR: #000000">(</span>
				<span style="FONT-WEIGHT: bold; COLOR: #800000">4000</span>
				<span style="COLOR: #000000">),<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    static </span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000"> ODCIAggregateInitialize(cs_ctx </span>
				<span style="COLOR: #808080">In</span>
				<span style="COLOR: #000000"> Out strcat_type) </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="FONT-WEIGHT: bold; COLOR: #000000">number</span>
				<span style="COLOR: #000000">,<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    member </span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000"> ODCIAggregateIterate(self </span>
				<span style="COLOR: #808080">In</span>
				<span style="COLOR: #000000"> Out strcat_type,value </span>
				<span style="COLOR: #808080">in</span>
				<span style="COLOR: #000000"> </span>
				<span style="FONT-WEIGHT: bold; COLOR: #000000">varchar2</span>
				<span style="COLOR: #000000">) </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="FONT-WEIGHT: bold; COLOR: #000000">number</span>
				<span style="COLOR: #000000">,<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    member </span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000"> ODCIAggregateMerge(self </span>
				<span style="COLOR: #808080">In</span>
				<span style="COLOR: #000000"> Out strcat_type,ctx2 </span>
				<span style="COLOR: #808080">In</span>
				<span style="COLOR: #000000"> Out strcat_type) <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="FONT-WEIGHT: bold; COLOR: #000000">number</span>
				<span style="COLOR: #000000">,<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    member </span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000"> ODCIAggregateTerminate(self </span>
				<span style="COLOR: #808080">In</span>
				<span style="COLOR: #000000"> Out strcat_type,returnValue Out <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="FONT-WEIGHT: bold; COLOR: #000000">varchar2</span>
				<span style="COLOR: #000000">,flags </span>
				<span style="COLOR: #808080">in</span>
				<span style="COLOR: #000000"> </span>
				<span style="FONT-WEIGHT: bold; COLOR: #000000">number</span>
				<span style="COLOR: #000000">) </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="FONT-WEIGHT: bold; COLOR: #000000">number</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #808080">/</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p>
				<br />------------------------------------<br /></p>
		<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" />
				<span style="COLOR: #0000ff">create</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #808080">or</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #ff00ff">replace</span>
				<span style="COLOR: #000000"> type body strcat_type </span>
				<span style="COLOR: #0000ff">is</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  static </span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000"> ODCIAggregateInitialize(cs_ctx </span>
				<span style="COLOR: #808080">IN</span>
				<span style="COLOR: #000000"> OUT strcat_type) </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="FONT-WEIGHT: bold; COLOR: #000000">number</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">is</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">begin</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      cs_ctx :</span>
				<span style="COLOR: #808080">=</span>
				<span style="COLOR: #000000"> strcat_type( </span>
				<span style="COLOR: #0000ff">null</span>
				<span style="COLOR: #000000"> );<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> ODCIConst.Success;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">end</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  member </span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000"> ODCIAggregateIterate(self </span>
				<span style="COLOR: #808080">IN</span>
				<span style="COLOR: #000000"> OUT strcat_type,<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                       value </span>
				<span style="COLOR: #808080">IN</span>
				<span style="COLOR: #000000"> </span>
				<span style="FONT-WEIGHT: bold; COLOR: #000000">varchar2</span>
				<span style="COLOR: #000000"> )<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="FONT-WEIGHT: bold; COLOR: #000000">number</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">is</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">begin</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000"> self.cat_string </span>
				<span style="COLOR: #0000ff">is</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">null</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">then</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         self.cat_string :</span>
				<span style="COLOR: #808080">=</span>
				<span style="COLOR: #000000"> value;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #0000ff">end</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> ODCIConst.Success;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">end</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  member </span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000"> ODCIAggregateTerminate(self </span>
				<span style="COLOR: #808080">IN</span>
				<span style="COLOR: #000000"> Out strcat_type,<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                         returnValue OUT </span>
				<span style="FONT-WEIGHT: bold; COLOR: #000000">varchar2</span>
				<span style="COLOR: #000000">,<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                         flags </span>
				<span style="COLOR: #808080">IN</span>
				<span style="COLOR: #000000"> </span>
				<span style="FONT-WEIGHT: bold; COLOR: #000000">number</span>
				<span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="FONT-WEIGHT: bold; COLOR: #000000">number</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">is</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">begin</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      returnValue :</span>
				<span style="COLOR: #808080">=</span>
				<span style="COLOR: #000000"> self.cat_string;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> ODCIConst.Success;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">end</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  member </span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000"> ODCIAggregateMerge(self </span>
				<span style="COLOR: #808080">IN</span>
				<span style="COLOR: #000000"> OUT strcat_type,<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                     ctx2 </span>
				<span style="COLOR: #808080">IN</span>
				<span style="COLOR: #000000"> Out strcat_type)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="FONT-WEIGHT: bold; COLOR: #000000">number</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">is</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">begin</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       if self.cat_string is null then <br />                   self.cat_string :=  ctx2.cat_string;<br />          end if;<br /></span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> ODCIConst.Success;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">end</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">end</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #808080">/</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p>-------------------<br /></p>
		<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" />
				<span style="COLOR: #0000ff">CREATE</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #808080">OR</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #ff00ff">REPLACE</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">FUNCTION</span>
				<span style="COLOR: #000000"> sum_str(input </span>
				<span style="FONT-WEIGHT: bold; COLOR: #000000">varchar2</span>
				<span style="COLOR: #000000"> )<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">RETURN</span>
				<span style="COLOR: #000000"> </span>
				<span style="FONT-WEIGHT: bold; COLOR: #000000">varchar2</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />PARALLEL_ENABLE AGGREGATE USING strcat_type;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #808080">/</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p>-------最后查询语句：<br /></p>
		<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" />
				<span style="COLOR: #0000ff">select</span>
				<span style="COLOR: #000000"> code,sum_str(name), sum_str(b01) b01,sum_str(s01) ,sum_str(b02) b02,sum_str(s02)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">from</span>
				<span style="COLOR: #000000"> javaeye </span>
				<span style="COLOR: #0000ff">group</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">by</span>
				<span style="COLOR: #000000"> code </span>
				<span style="COLOR: #0000ff">order</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">by</span>
				<span style="COLOR: #000000"> code</span>
		</div><img src ="http://www.blogjava.net/kebo/aggbug/249993.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kebo/" target="_blank">kebo</a> 2009-01-05 21:55 <a href="http://www.blogjava.net/kebo/archive/2009/01/05/249993.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>openlayers如何利用vector和style作出marker</title><link>http://www.blogjava.net/kebo/archive/2008/09/04/226919.html</link><dc:creator>kebo</dc:creator><author>kebo</author><pubDate>Thu, 04 Sep 2008 06:12:00 GMT</pubDate><guid>http://www.blogjava.net/kebo/archive/2008/09/04/226919.html</guid><wfw:comment>http://www.blogjava.net/kebo/comments/226919.html</wfw:comment><comments>http://www.blogjava.net/kebo/archive/2008/09/04/226919.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/kebo/comments/commentRss/226919.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kebo/services/trackbacks/226919.html</trackback:ping><description><![CDATA[<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;">
				<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
				<span style="color: rgb(0, 128, 128);"> 定义标注的样式，这个决定标注显示的方式，必须定义好<br /> 1</span> <span style="color: rgb(0, 0, 0);">$package(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">com.bct.map</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br /></span><span style="color: rgb(0, 128, 128);"> 2</span> <span style="color: rgb(0, 0, 0);">com.bct.map.EncoderMarkerStyle </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> {<br /></span><span style="color: rgb(0, 128, 128);"> 3</span> <span style="color: rgb(0, 0, 0);">    'bigEncoder':{<br /></span><span style="color: rgb(0, 128, 128);"> 4</span> <span style="color: rgb(0, 0, 0);">        graphicWidth:</span><span style="color: rgb(0, 0, 0);">24</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);"> 5</span> <span style="color: rgb(0, 0, 0);">        graphicHeight : </span><span style="color: rgb(0, 0, 0);">24</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);"> 6</span> <span style="color: rgb(0, 0, 0);">        graphicXOffset : </span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">12</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);"> 7</span> <span style="color: rgb(0, 0, 0);">        graphicYOffset : </span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">24</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);"> 8</span> <span style="color: rgb(0, 0, 0);">        externalGraphic : </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">scripts/map/img/channel2.png</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 9</span> <span style="color: rgb(0, 0, 0);">    },<br /></span><span style="color: rgb(0, 128, 128);">10</span> <span style="color: rgb(0, 0, 0);">    'smallEncoder':{<br /></span><span style="color: rgb(0, 128, 128);">11</span> <span style="color: rgb(0, 0, 0);">        graphicWidth:</span><span style="color: rgb(0, 0, 0);">16</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);">12</span> <span style="color: rgb(0, 0, 0);">        graphicHeight : </span><span style="color: rgb(0, 0, 0);">16</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);">13</span> <span style="color: rgb(0, 0, 0);">        graphicXOffset : </span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">8</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);">14</span> <span style="color: rgb(0, 0, 0);">        graphicYOffset : </span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">16</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);">15</span> <span style="color: rgb(0, 0, 0);">        externalGraphic : </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">scripts/map/img/channel.gif</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">16</span> <span style="color: rgb(0, 0, 0);">    },<br /></span><span style="color: rgb(0, 128, 128);">17</span> <span style="color: rgb(0, 0, 0);">    'selectStyle':{<br /></span><span style="color: rgb(0, 128, 128);">18</span> <span style="color: rgb(0, 0, 0);">        pointerEvents: </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">visiblePainted</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);">19</span> <span style="color: rgb(0, 0, 0);">        border:</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">border:25 outset #ff88ff</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);">20</span> <span style="color: rgb(0, 0, 0);">        cursor: </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">pointer</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);">21</span> <span style="color: rgb(0, 0, 0);">        graphicWidth:</span><span style="color: rgb(0, 0, 0);">24</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);">22</span> <span style="color: rgb(0, 0, 0);">        graphicHeight : </span><span style="color: rgb(0, 0, 0);">24</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);">23</span> <span style="color: rgb(0, 0, 0);">        graphicXOffset : </span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">12</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);">24</span> <span style="color: rgb(0, 0, 0);">        graphicYOffset : </span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">24</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);">25</span> <span style="color: rgb(0, 0, 0);">        externalGraphic : </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">scripts/map/img/channel2.png</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">    <br /></span><span style="color: rgb(0, 128, 128);">26</span> <span style="color: rgb(0, 0, 0);">    },<br /></span><span style="color: rgb(0, 128, 128);">27</span> <span style="color: rgb(0, 0, 0);">    styleMap: </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> OpenLayers.StyleMap({<br /></span><span style="color: rgb(0, 128, 128);">28</span> <span style="color: rgb(0, 0, 0);">                    </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">select</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">: </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> OpenLayers.Style({pointRadius: </span><span style="color: rgb(0, 0, 0);">24</span><span style="color: rgb(0, 0, 0);">})<br /></span><span style="color: rgb(0, 128, 128);">29</span> <span style="color: rgb(0, 0, 0);">    })<br /></span><span style="color: rgb(0, 128, 128);">30</span> <span style="color: rgb(0, 0, 0);">}<br /><br />marker层，扩展vector层，通过point和style达到marker的效果<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 128, 128);">  1</span> <span style="color: rgb(0, 0, 0);">$package(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">com.bct.map</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br /></span><span style="color: rgb(0, 128, 128);">  2</span> <span style="color: rgb(0, 0, 0);">$import(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">com.bct.map.EncoderMarkerStyle</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br /></span><span style="color: rgb(0, 128, 128);">  3</span> <span style="color: rgb(0, 0, 0);">com.bct.map.MarkerVectorLayer </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> OpenLayers.Class(OpenLayers.Layer.Vector,{<br /></span><span style="color: rgb(0, 128, 128);">  4</span> <span style="color: rgb(0, 0, 0);">    </span><span style="color: rgb(0, 128, 0);">/*</span><span style="color: rgb(0, 128, 0);">*<br /></span><span style="color: rgb(0, 128, 128);">  5</span> <span style="color: rgb(0, 128, 0);">     * parameters<br /></span><span style="color: rgb(0, 128, 128);">  6</span> <span style="color: rgb(0, 128, 0);">     * attribute filer对象<br /></span><span style="color: rgb(0, 128, 128);">  7</span> <span style="color: rgb(0, 128, 0);">     </span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">  8</span> <span style="color: rgb(0, 0, 0);">    getFeatureByAttribute :</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(attributes){<br /></span><span style="color: rgb(0, 128, 128);">  9</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> feature </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">;<br /></span><span style="color: rgb(0, 128, 128);"> 10</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> i</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;i</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.features.length; </span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">i){<br /></span><span style="color: rgb(0, 128, 128);"> 11</span> <span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> attri </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.features[i].attributes;<br /></span><span style="color: rgb(0, 128, 128);"> 12</span> <span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> find </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">false</span><span style="color: rgb(0, 0, 0);">;<br /></span><span style="color: rgb(0, 128, 128);"> 13</span> <span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> j </span><span style="color: rgb(0, 0, 255);">in</span><span style="color: rgb(0, 0, 0);"> attributes){<br /></span><span style="color: rgb(0, 128, 128);"> 14</span> <span style="color: rgb(0, 0, 0);">                </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(attributes[j] </span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);"> attri[j]){<br /></span><span style="color: rgb(0, 128, 128);"> 15</span> <span style="color: rgb(0, 0, 0);">                    find </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">;<br /></span><span style="color: rgb(0, 128, 128);"> 16</span> <span style="color: rgb(0, 0, 0);">                }<br /></span><span style="color: rgb(0, 128, 128);"> 17</span> <span style="color: rgb(0, 0, 0);">            }<br /></span><span style="color: rgb(0, 128, 128);"> 18</span> <span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(find){<br /></span><span style="color: rgb(0, 128, 128);"> 19</span> <span style="color: rgb(0, 0, 0);">                </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.features[i]; <br /></span><span style="color: rgb(0, 128, 128);"> 20</span> <span style="color: rgb(0, 0, 0);">            }            <br /></span><span style="color: rgb(0, 128, 128);"> 21</span> <span style="color: rgb(0, 0, 0);">        }<br /></span><span style="color: rgb(0, 128, 128);"> 22</span> <span style="color: rgb(0, 0, 0);">    <br /></span><span style="color: rgb(0, 128, 128);"> 23</span> <span style="color: rgb(0, 0, 0);">    },<br /></span><span style="color: rgb(0, 128, 128);"> 24</span> <span style="color: rgb(0, 0, 0);">    addEncorderFeature:</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(encNode,location){<br /></span><span style="color: rgb(0, 128, 128);"> 25</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(encNode</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.repetitiveCheck(encNode.id)){<br /></span><span style="color: rgb(0, 128, 128);"> 26</span> <span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">;<br /></span><span style="color: rgb(0, 128, 128);"> 27</span> <span style="color: rgb(0, 0, 0);">        }<br /></span><span style="color: rgb(0, 128, 128);"> 28</span> <span style="color: rgb(0, 0, 0);">       <font color="#ff3300"> </font></span><font color="#ff3300"><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> attributes </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> OpenLayers.Util.extend({}, encNode.attributes);<br /></span><span style="color: rgb(0, 128, 128);"> 29</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> enc_point </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> OpenLayers.Geometry.Point(location.lon,location.lat);<br /></span><span style="color: rgb(0, 128, 128);"> 30</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> enc_Feature </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> OpenLayers.Feature.Vector(enc_point,attributes,com.bct.map.EncoderMarkerStyle['smallEncoder']);<br /></span><span style="color: rgb(0, 128, 128);"> 31</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">this</span></font><span style="color: rgb(0, 0, 0);"><font color="#ff3300">.addFeatures([enc_Feature]);</font><br /></span><span style="color: rgb(0, 128, 128);"> 32</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(encNode.attributes['lon']</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">encNode.attributes['lat']</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">encNode.attributes['lon'].length</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">){<br /></span><span style="color: rgb(0, 128, 128);"> 33</span> <span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">;<br /></span><span style="color: rgb(0, 128, 128);"> 34</span> <span style="color: rgb(0, 0, 0);">        }<br /></span><span style="color: rgb(0, 128, 128);"> 35</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.updateChannel(encNode.id,location.lon,location.lat);<br /></span><span style="color: rgb(0, 128, 128);"> 36</span> <span style="color: rgb(0, 0, 0);">    },<br /></span><span style="color: rgb(0, 128, 128);"> 37</span> <span style="color: rgb(0, 0, 0);">    addDeptFeature:</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(deptNode,location){<br /></span><span style="color: rgb(0, 128, 128);"> 38</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(deptNode</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.repetitiveCheck(deptNode.id)){<br /></span><span style="color: rgb(0, 128, 128);"> 39</span> <span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">;<br /></span><span style="color: rgb(0, 128, 128);"> 40</span> <span style="color: rgb(0, 0, 0);">        }<br /></span><span style="color: rgb(0, 128, 128);"> 41</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> attributes </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> OpenLayers.Util.extend({}, deptNode.attributes);<br /></span><span style="color: rgb(0, 128, 128);"> 42</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> enc_point </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> OpenLayers.Geometry.Point(location.lon,location.lat);<br /></span><span style="color: rgb(0, 128, 128);"> 43</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> enc_Feature </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> OpenLayers.Feature.Vector(enc_point,attributes,com.bct.map.EncoderMarkerStyle['smallEncoder']);<br /></span><span style="color: rgb(0, 128, 128);"> 44</span> <span style="color: rgb(0, 0, 0);">        <br /></span><span style="color: rgb(0, 128, 128);"> 45</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.addFeatures([enc_Feature]);<br /></span><span style="color: rgb(0, 128, 128);"> 46</span> <span style="color: rgb(0, 0, 0);">        <br /></span><span style="color: rgb(0, 128, 128);"> 47</span> <span style="color: rgb(0, 0, 0);">    },<br /></span><span style="color: rgb(0, 128, 128);"> 48</span> <span style="color: rgb(0, 0, 0);">    repetitiveCheck:</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(entity_id){<br /></span><span style="color: rgb(0, 128, 128);"> 49</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.getFeatureByAttribute({id:entity_id})){<br /></span><span style="color: rgb(0, 128, 128);"> 50</span> <span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">;<br /></span><span style="color: rgb(0, 128, 128);"> 51</span> <span style="color: rgb(0, 0, 0);">        }<br /></span><span style="color: rgb(0, 128, 128);"> 52</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">false</span><span style="color: rgb(0, 0, 0);">;<br /></span><span style="color: rgb(0, 128, 128);"> 53</span> <span style="color: rgb(0, 0, 0);">    },<br /></span><span style="color: rgb(0, 128, 128);"> 54</span> <span style="color: rgb(0, 0, 0);">    updateChannel:</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(channel_id,lon,lat){<br /></span><span style="color: rgb(0, 128, 128);"> 55</span> <span style="color: rgb(0, 0, 0);">        Ext.Ajax.request({<br /></span><span style="color: rgb(0, 128, 128);"> 56</span> <span style="color: rgb(0, 0, 0);">               url: 'deviceVideoEncoder.</span><span style="color: rgb(0, 0, 255);">do</span><span style="color: rgb(0, 0, 0);">?</span><span style="color: rgb(0, 0, 0);">method</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">updateLonlat</span><span style="color: rgb(0, 0, 0);">&amp;</span><span style="color: rgb(0, 0, 0);">id</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">channel_id</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&amp;lon=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">lon</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&amp;lat=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">lat<br /></span><span style="color: rgb(0, 128, 128);"> 57</span> <span style="color: rgb(0, 0, 0);">        });<br /></span><span style="color: rgb(0, 128, 128);"> 58</span> <span style="color: rgb(0, 0, 0);">    },<br /></span><span style="color: rgb(0, 128, 128);"> 59</span> <span style="color: rgb(0, 0, 0);">    channelMarkerClick:</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">() {<br /></span><span style="color: rgb(0, 128, 128);"> 60</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> features </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.selectedFeatures;<br /></span><span style="color: rgb(0, 128, 128);"> 61</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(features.length </span><span style="color: rgb(0, 0, 0);">&gt;=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">features[</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">]) {<br /></span><span style="color: rgb(0, 128, 128);"> 62</span> <span style="color: rgb(0, 0, 0);">            feature </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> features[</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">];            <br /></span><span style="color: rgb(0, 128, 128);"> 63</span> <span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> treeNodeAttribute </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> feature.attributes;<br /></span><span style="color: rgb(0, 128, 128);"> 64</span> <span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> vedioPopForm </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Ext.FormPanel({<br /></span><span style="color: rgb(0, 128, 128);"> 65</span> <span style="color: rgb(0, 0, 0);">                                   frame:</span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);"> 66</span> <span style="color: rgb(0, 0, 0);">                                labelAlign: 'top',<br /></span><span style="color: rgb(0, 128, 128);"> 67</span> <span style="color: rgb(0, 0, 0);">                                bodyStyle:'padding:5px',<br /></span><span style="color: rgb(0, 128, 128);"> 68</span> <span style="color: rgb(0, 0, 0);">                                width: </span><span style="color: rgb(0, 0, 0);">400</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);"> 69</span> <span style="color: rgb(0, 0, 0);">                                height:</span><span style="color: rgb(0, 0, 0);">200</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);"> 70</span> <span style="color: rgb(0, 0, 0);">                                layout: 'fit',<br /></span><span style="color: rgb(0, 128, 128);"> 71</span> <span style="color: rgb(0, 0, 0);">                                items:[{<br /></span><span style="color: rgb(0, 128, 128);"> 72</span> <span style="color: rgb(0, 0, 0);">                                            xtype:'fieldset',<br /></span><span style="color: rgb(0, 128, 128);"> 73</span> <span style="color: rgb(0, 0, 0);">                                            title: '摄像头信息',<br /></span><span style="color: rgb(0, 128, 128);"> 74</span> <span style="color: rgb(0, 0, 0);">                                            autoHeight:</span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);"> 75</span> <span style="color: rgb(0, 0, 0);">                                            autoWidth:</span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);"> 76</span> <span style="color: rgb(0, 0, 0);">                                            html:</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&lt;p&gt;&lt;font color='red' size='2'&gt;名称:</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">treeNodeAttribute['text']<br /></span><span style="color: rgb(0, 128, 128);"> 77</span> <span style="color: rgb(0, 0, 0);">                                            </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color='red' size='2'&gt;通道号:</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">treeNodeAttribute['channelNumber']<br /></span><span style="color: rgb(0, 128, 128);"> 78</span> <span style="color: rgb(0, 0, 0);">                                            </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color='red' size='2'&gt;设备名称:</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">treeNodeAttribute['deviceunitName']<br /></span><span style="color: rgb(0, 128, 128);"> 79</span> <span style="color: rgb(0, 0, 0);">                                            </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color='red' size='2'&gt;所属部门:</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">treeNodeAttribute['deptName']<br /></span><span style="color: rgb(0, 128, 128);"> 80</span> <span style="color: rgb(0, 0, 0);">                                            </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color='red' size='2'&gt;经纬度:</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">treeNodeAttribute['lon']</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">treeNodeAttribute['lat']<br /></span><span style="color: rgb(0, 128, 128);"> 81</span> <span style="color: rgb(0, 0, 0);">                                    }]<br /></span><span style="color: rgb(0, 128, 128);"> 82</span> <span style="color: rgb(0, 0, 0);">            });<br /></span><span style="color: rgb(0, 128, 128);"> 83</span> <span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> win </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Ext.Window({<br /></span><span style="color: rgb(0, 128, 128);"> 84</span> <span style="color: rgb(0, 0, 0);">                width : </span><span style="color: rgb(0, 0, 0);">420</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);"> 85</span> <span style="color: rgb(0, 0, 0);">                height: </span><span style="color: rgb(0, 0, 0);">220</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);"> 86</span> <span style="color: rgb(0, 0, 0);">                items : vedioPopForm<br /></span><span style="color: rgb(0, 128, 128);"> 87</span> <span style="color: rgb(0, 0, 0);">            });<br /></span><span style="color: rgb(0, 128, 128);"> 88</span> <span style="color: rgb(0, 0, 0);">            win.show();            <br /></span><span style="color: rgb(0, 128, 128);"> 89</span> <span style="color: rgb(0, 0, 0);">        }<br /></span><span style="color: rgb(0, 128, 128);"> 90</span> <span style="color: rgb(0, 0, 0);">    },<br /></span><span style="color: rgb(0, 128, 128);"> 91</span> <span style="color: rgb(0, 0, 0);">    cartoonFeature :</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(feature){<br /></span><span style="color: rgb(0, 128, 128);"> 92</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.drawFeature(feature,com.bct.map.EncoderMarkerStyle['bigEncoder']);<br /></span><span style="color: rgb(0, 128, 128);"> 93</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> runner </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Ext.util.TaskRunner(</span><span style="color: rgb(0, 0, 0);">1000</span><span style="color: rgb(0, 0, 0);">);<br /></span><span style="color: rgb(0, 128, 128);"> 94</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> task </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> {<br /></span><span style="color: rgb(0, 128, 128);"> 95</span> <span style="color: rgb(0, 0, 0);">            run:</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.drawFeature,<br /></span><span style="color: rgb(0, 128, 128);"> 96</span> <span style="color: rgb(0, 0, 0);">            scope:</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);"> 97</span> <span style="color: rgb(0, 0, 0);">            args:[feature,com.bct.map.EncoderMarkerStyle['smallEncoder']],<br /></span><span style="color: rgb(0, 128, 128);"> 98</span> <span style="color: rgb(0, 0, 0);">            interval: </span><span style="color: rgb(0, 0, 0);">1000</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 99</span> <span style="color: rgb(0, 0, 0);">        }<br /></span><span style="color: rgb(0, 128, 128);">100</span> <span style="color: rgb(0, 0, 0);">        runner.start(task);<br /></span><span style="color: rgb(0, 128, 128);">101</span> <span style="color: rgb(0, 0, 0);">    },<br /></span><span style="color: rgb(0, 128, 128);">102</span> <span style="color: rgb(0, 0, 0);">    removeSelectFeature:</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(){<br /></span><span style="color: rgb(0, 128, 128);">103</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> features </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.selectedFeatures;<br /></span><span style="color: rgb(0, 128, 128);">104</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> i</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">features.length</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">; i</span><span style="color: rgb(0, 0, 0);">&gt;=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">; i</span><span style="color: rgb(0, 0, 0);">--</span><span style="color: rgb(0, 0, 0);">) {<br /></span><span style="color: rgb(0, 128, 128);">105</span> <span style="color: rgb(0, 0, 0);">            feature </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> features[i];<br /></span><span style="color: rgb(0, 128, 128);">106</span> <span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.updateChannel(feature.attributes['id'],</span><span style="color: rgb(0, 0, 0);">""</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">""</span><span style="color: rgb(0, 0, 0);">);<br /></span><span style="color: rgb(0, 128, 128);">107</span> <span style="color: rgb(0, 0, 0);">        }<br /></span><span style="color: rgb(0, 128, 128);">108</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.destroyFeatures(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.selectedFeatures);<br /></span><span style="color: rgb(0, 128, 128);">109</span> <span style="color: rgb(0, 0, 0);">    },<br /></span><span style="color: rgb(0, 128, 128);">110</span> <span style="color: rgb(0, 0, 0);">    monitorSelectFeature:</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(){        <br /></span><span style="color: rgb(0, 128, 128);">111</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> features </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.selectedFeatures;<br /></span><span style="color: rgb(0, 128, 128);">112</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(features.length </span><span style="color: rgb(0, 0, 0);">&gt;=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">features[</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">]) {<br /></span><span style="color: rgb(0, 128, 128);">113</span> <span style="color: rgb(0, 0, 0);">            feature </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> features[</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">];            <br /></span><span style="color: rgb(0, 128, 128);">114</span> <span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> treeNodeAttribute </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> feature.attributes;<br /></span><span style="color: rgb(0, 128, 128);">115</span> <span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> objId</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">mapAVShow</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">treeNodeAttribute['id'];<br /></span><span style="color: rgb(0, 128, 128);">116</span> <span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> win </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Ext.Window({<br /></span><span style="color: rgb(0, 128, 128);">117</span> <span style="color: rgb(0, 0, 0);">                width : </span><span style="color: rgb(0, 0, 0);">420</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);">118</span> <span style="color: rgb(0, 0, 0);">                height: </span><span style="color: rgb(0, 0, 0);">420</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 128, 128);">119</span> <span style="color: rgb(0, 0, 0);">                html:</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&lt;div id='mapEncoder' width='100%' height='100%'&gt;&lt;object width='100%' height='100%' id='</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">objId</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">' classid='clsid:574B47E8-A366-4AB9-B2EA-57F145CA3780'&gt;&lt;/object&gt;&lt;/div&gt;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">120</span> <span style="color: rgb(0, 0, 0);">            });            <br /></span><span style="color: rgb(0, 128, 128);">121</span> <span style="color: rgb(0, 0, 0);">            win.show();<br /></span><span style="color: rgb(0, 128, 128);">122</span> <span style="color: rgb(0, 0, 0);">            Ext.lib.Ajax.request('GET','channel.</span><span style="color: rgb(0, 0, 255);">do</span><span style="color: rgb(0, 0, 0);">?</span><span style="color: rgb(0, 0, 0);">method</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">getSiteId</span><span style="color: rgb(0, 0, 0);">&amp;</span><span style="color: rgb(0, 0, 0);">accept</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">json</span><span style="color: rgb(0, 0, 0);">&amp;</span><span style="color: rgb(0, 0, 0);">id</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">treeNodeAttribute['id'],<br /></span><span style="color: rgb(0, 128, 128);">123</span> <span style="color: rgb(0, 0, 0);">                              {success: </span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(o){<br /></span><span style="color: rgb(0, 128, 128);">124</span> <span style="color: rgb(0, 0, 0);">                                        </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> encoderObj;<br /></span><span style="color: rgb(0, 128, 128);">125</span> <span style="color: rgb(0, 0, 0);">                                        encoderObj</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">Ext.util.JSON.decode(o.responseText);<br /></span><span style="color: rgb(0, 128, 128);">126</span> <span style="color: rgb(0, 0, 0);">                                        $import(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">com.bct.monitor.mapAVShow</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br /></span><span style="color: rgb(0, 128, 128);">127</span> <span style="color: rgb(0, 0, 0);">                                        </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> avshowObj</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">document.getElementById(objId);<br /></span><span style="color: rgb(0, 128, 128);">128</span> <span style="color: rgb(0, 0, 0);">                                        </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> avshow</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> com.bct.monitor.mapAVShow(avshowObj,<br /></span><span style="color: rgb(0, 128, 128);">129</span> <span style="color: rgb(0, 0, 0);">                                        encoderObj[</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">].siteId,encoderObj[</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">].enCoderId,encoderObj[</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">].diveceUnitTypeId,'');<br /></span><span style="color: rgb(0, 128, 128);">130</span> <span style="color: rgb(0, 0, 0);">                                        avshow.startVideo();<br /></span><span style="color: rgb(0, 128, 128);">131</span> <span style="color: rgb(0, 0, 0);">                                        win.on(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">destroy</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);"> del(){<br /></span><span style="color: rgb(0, 128, 128);">132</span> <span style="color: rgb(0, 0, 0);">                                                         avshow.stopVideo();<br /></span><span style="color: rgb(0, 128, 128);">133</span> <span style="color: rgb(0, 0, 0);">                                        });<br /></span><span style="color: rgb(0, 128, 128);">134</span> <span style="color: rgb(0, 0, 0);">                                }<br /></span><span style="color: rgb(0, 128, 128);">135</span> <span style="color: rgb(0, 0, 0);">                              });             <br /></span><span style="color: rgb(0, 128, 128);">136</span> <span style="color: rgb(0, 0, 0);">        }<br /></span><span style="color: rgb(0, 128, 128);">137</span> <span style="color: rgb(0, 0, 0);">    }<br /></span><span style="color: rgb(0, 128, 128);">138</span> <span style="color: rgb(0, 0, 0);">});</span></div><br /></span></div>
		<br /><img src ="http://www.blogjava.net/kebo/aggbug/226919.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kebo/" target="_blank">kebo</a> 2008-09-04 14:12 <a href="http://www.blogjava.net/kebo/archive/2008/09/04/226919.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一次sql调优历程</title><link>http://www.blogjava.net/kebo/archive/2007/09/10/144078.html</link><dc:creator>kebo</dc:creator><author>kebo</author><pubDate>Mon, 10 Sep 2007 11:35:00 GMT</pubDate><guid>http://www.blogjava.net/kebo/archive/2007/09/10/144078.html</guid><wfw:comment>http://www.blogjava.net/kebo/comments/144078.html</wfw:comment><comments>http://www.blogjava.net/kebo/archive/2007/09/10/144078.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kebo/comments/commentRss/144078.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kebo/services/trackbacks/144078.html</trackback:ping><description><![CDATA[<p>在项目进入性能测试阶段，终于爆发了sql运行缓慢，系统吞吐量下降，甚至一度出现oracle服务器cpu100%的情况。具体开发和测试人员报告情况，开始介入处理。<br /><br />具体查找性能缓慢的过程略除。<br />发现一条sql运行缓慢。通过跟踪发现一下信息<br /><span lang="EN-US">select alias_p2.pendingid, alias_p2.workitemid, alias_p2.operationid, alias_p2.operationkey,</span></p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>2<span style="mso-spacerun: yes">  </span>alias_p2.title, alias_p2.sendercn, alias_p2.operatedes, alias_p2.pendingstate,</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>3<span style="mso-spacerun: yes">  </span>alias_p2.parameter, alias_p2.createdate, alias_p2.deptname, alias_p2.completeddate ,</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>4<span style="mso-spacerun: yes">  </span>alias_p2.openstate , alias_p2.name, alias_p2.processinstanceid, alias_p2.asset</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>5<span style="mso-spacerun: yes">   </span>from ( select alias_p1.pendingid, alias_p1.workitemid, alias_p1.operationid,</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>6<span style="mso-spacerun: yes">   </span>alias_p1.operationkey, alias_p1.title, alias_p1.sendercn, alias_p1.operatedes,</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>7<span style="mso-spacerun: yes">    </span>alias_p1.pendingstate, alias_p1.parameter, alias_p1.createdate, alias_p1.deptname,</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>8<span style="mso-spacerun: yes">      </span>alias_p1.completeddate , alias_p1.openstate , alias_p1.name, alias_p1.processinstanceid ,</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>9<span style="mso-spacerun: yes">        </span>alias_p1.asset , rownum rn from(select alias_p.pendingid, alias_p.workitemid, alias_p.operationid,</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>10<span style="mso-spacerun: yes">        </span>alias_p.operationkey, alias_p.title, alias_p.sendercn, alias_p.operatedes, alias_p.pendingstate,</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>11<span style="mso-spacerun: yes">        </span>alias_p.parameter, alias_p.createdate, alias_p.deptname, alias_p.completeddate , alias_p.openstate ,</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>12<span style="mso-spacerun: yes">         </span>pd.name, w.processinstanceid , eam_db.concatassetname( alias_p.operationkey, alias_p.operationid )</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>13<span style="mso-spacerun: yes">          </span>asset from WF_Pending alias_p, WF_WorkItem w, WF_ProcessDefinition pd, WF_ProcessInstance pi</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>14<span style="mso-spacerun: yes">          </span>where alias_p.ownerid='qinxue'<span style="mso-spacerun: yes">   </span>and alias_p.pendingstate in(0,3,5,7,9,10,11,12)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>15<span style="mso-spacerun: yes">            </span>and (alias_p.deptname='</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">审控部信息处</span>
				<span lang="EN-US">' or alias_p.deptname='' or alias_p.deptname is null)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>16<span style="mso-spacerun: yes">            </span>and w.workitemid = alias_p.workitemid<span style="mso-spacerun: yes">   </span>and pi.processinstanceid = w.processinstanceid</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>17<span style="mso-spacerun: yes">  </span>and pi.completeddate is null<span style="mso-spacerun: yes">   </span>and pd.processdefinitionid = w.processdefinitionid<span style="mso-spacerun: yes">  </span>order by alias_p.createdate desc) alias_p1 where rownum &lt;=10)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">alias_p2 where rn&gt;=1;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">已选择</span>
				<span lang="EN-US">10</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">行。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">执行计划</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">----------------------------------------------------------</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">   </span>0<span style="mso-spacerun: yes">      </span>SELECT STATEMENT Optimizer=CHOOSE (Cost=10 Card=1 Bytes=2507</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">          </span>)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">   </span>1<span style="mso-spacerun: yes">    </span>0<span style="mso-spacerun: yes">   </span>VIEW (Cost=10 Card=1 Bytes=2507)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">   </span>2<span style="mso-spacerun: yes">    </span>1<span style="mso-spacerun: yes">     </span>COUNT (STOPKEY)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">   </span>3<span style="mso-spacerun: yes">    </span>2<span style="mso-spacerun: yes">       </span>VIEW (Cost=10 Card=1 Bytes=2494)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">   </span>4<span style="mso-spacerun: yes">    </span>3<span style="mso-spacerun: yes">         </span>SORT (ORDER BY STOPKEY) (Cost=10 Card=1 Bytes=167)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">   </span>5<span style="mso-spacerun: yes">    </span>4<span style="mso-spacerun: yes">           </span>NESTED LOOPS (Cost=8 Card=1 Bytes=167)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">   </span>6<span style="mso-spacerun: yes">    </span>5<span style="mso-spacerun: yes">             </span>NESTED LOOPS (Cost=7 Card=1 Bytes=162)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">   </span>7<span style="mso-spacerun: yes">    </span>6<span style="mso-spacerun: yes">               </span>NESTED LOOPS (Cost=6 Card=1 Bytes=134)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">   </span>8<span style="mso-spacerun: yes">    </span>7<span style="mso-spacerun: yes">                 </span>TABLE ACCESS (FULL) OF 'WF_PENDING' (Cost=5</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">          </span>Card=1 Bytes=111)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">   </span>9<span style="mso-spacerun: yes">    </span>7<span style="mso-spacerun: yes">                 </span>TABLE ACCESS (BY INDEX ROWID) OF 'WF_WORKITE</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">          </span>M' (Cost=1 Card=3 Bytes=69)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>10<span style="mso-spacerun: yes">    </span>9<span style="mso-spacerun: yes">                   </span>INDEX (UNIQUE SCAN) OF 'SYS_C003694' (UNIQ</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-outline-level: 1">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">          </span>UE)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>11<span style="mso-spacerun: yes">    </span>6<span style="mso-spacerun: yes">               </span>TABLE ACCESS (BY INDEX ROWID) OF 'WF_PROCESSDE</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">          </span>FINITION' (Cost=1 Card=1 Bytes=28)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>12<span style="mso-spacerun: yes">   </span>11<span style="mso-spacerun: yes">                 </span>INDEX (UNIQUE SCAN) OF 'SYS_C003684' (UNIQUE</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">          </span>)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>13<span style="mso-spacerun: yes">    </span>5<span style="mso-spacerun: yes">             </span>TABLE ACCESS (BY INDEX ROWID) OF 'WF_PROCESSINST</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">          </span>ANCE' (Cost=1 Card=1 Bytes=5)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>14<span style="mso-spacerun: yes">   </span>13<span style="mso-spacerun: yes">               </span>INDEX (UNIQUE SCAN) OF 'SYS_C003662' (UNIQUE)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">统计信息</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">----------------------------------------------------------</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">        </span>314<span style="mso-spacerun: yes">  </span>recursive calls</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-outline-level: 1">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">          </span>0<span style="mso-spacerun: yes">  </span>db block gets</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">     </span>
						<span style="COLOR: #ff6600">
								<span style="mso-spacerun: yes"> </span>29433<span style="mso-spacerun: yes">  </span>consistent gets<o:p></o:p></span>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">          </span>0<span style="mso-spacerun: yes">  </span>physical reads</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">     </span>
						<span style="mso-spacerun: yes">     </span>0<span style="mso-spacerun: yes">  </span>redo size</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">       </span>2153<span style="mso-spacerun: yes">  </span>bytes sent via SQL*Net to client</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">        </span>372<span style="mso-spacerun: yes">  </span>bytes received via SQL*Net from client</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">          </span>2<span style="mso-spacerun: yes">  </span>SQL*Net roundtrips to/from client</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">        </span>
						<span style="COLOR: #ff6600">101<span style="mso-spacerun: yes">  </span>sorts (memory)<o:p></o:p></span>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">          </span>0<span style="mso-spacerun: yes">  </span>sorts (disk)</span>
		</p>
		<p>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
						<span style="mso-spacerun: yes">         </span>10<span style="mso-spacerun: yes">  </span>rows processed<br /><br />其中一致读达到近3万次，关联调用出现314次。排序数值也非常多，显然第一目标是把这两个数据降下来。<br />通过进一步的分析。发现出现这些问题的主要原因是调用<font size="3">eam_db.concatassetname( alias_p.operationkey, alias_p.operationid )这个包。<br />开始考虑直接在sql外层做关联，不用function来实现。利用聚集函数来合并数据。<br />着手建立：<br /><br />聚集函数： CREATE OR REPLACE FUNCTION F_ASSETLINK(P_STR VARCHAR2) RETURN VARCHAR2<br />AGGREGATE USING asset_link;</font></span>
		</p>
		<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
				<font size="3">
						<p>
								<br />----------------------<br />创建type：CREATE OR REPLACE TYPE ASSET_LINK AS OBJECT (<br />STR VARCHAR2(30000),<br />STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT ASSET_LINK) RETURN NUMBER,<br />MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT ASSET_LINK, VALUE IN VARCHAR2) RETURN NUMBER,<br />MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN ASSET_LINK, RETURNVALUE OUT VARCHAR2, FLAGS IN NUMBER) RETURN NUMBER,<br />MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT ASSET_LINK, CTX2 IN ASSET_LINK) RETURN NUMBER<br />)<br />------------------------------------------------------</p>
						<p>创建type body：CREATE OR REPLACE TYPE BODY ASSET_LINK IS<br />STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT ASSET_LINK) RETURN NUMBER IS<br />BEGIN<br />SCTX := ASSET_LINK(NULL);<br />RETURN ODCICONST.SUCCESS;<br />END;<br />MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT ASSET_LINK, VALUE IN VARCHAR2) RETURN NUMBER IS<br />BEGIN<br />SELF.STR := SELF.STR ||','|| VALUE;<br />RETURN ODCICONST.SUCCESS;<br />END;<br />MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN ASSET_LINK, RETURNVALUE OUT VARCHAR2, FLAGS IN NUMBER) RETURN NUMBER IS<br />BEGIN<br />RETURNVALUE := SELF.STR;<br />RETURN ODCICONST.SUCCESS;<br />END;<br />MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT ASSET_LINK, CTX2 IN ASSET_LINK) RETURN NUMBER IS<br />BEGIN<br />NULL;<br />RETURN ODCICONST.SUCCESS;<br />END;<br />END;<br />调整sql如下：<br />select alias_p.pendingid, alias_p.workitemid, alias_p.operationid,<br />   alias_p.operationkey, alias_p.title, alias_p.sendercn, alias_p.operatedes, alias_p.pendingstate,<br />   alias_p.parameter, alias_p.createdate, alias_p.deptname, alias_p.completeddate , alias_p.openstate ,<br />   pd.name, w.processinstanceid <br />   --,T.ASSETCLASS3  ASSET   <br />   ,f_assetlink(d3.typename) ASSET<br />   --,eam_db.concatassetname( alias_p.operationkey, alias_p.operationid )  asset <br />   from WF_Pending alias_p, WF_WorkItem w, <br />   WF_ProcessDefinition pd, WF_ProcessInstance pi<br />   , tb_asset_dizhiyihao T,dic_app_wfconfig wfc,dic_app_assettype3 d3<br />   where alias_p.ownerid='qinxue'   <br />   and alias_p.pendingstate in(0,3,5,7,9,10,11,12)<br />   and (alias_p.deptname='审控部信息处' or alias_p.deptname='' or alias_p.deptname is null)<br />   and w.workitemid = alias_p.workitemid   <br />   and pi.processinstanceid = w.processinstanceid<br />   and pi.completeddate is null   <br />   and pd.processdefinitionid = w.processdefinitionid<br />   AND    t.pk_businessid = alias_p.operationid <br />          and alias_p.operationkey = wfc.memo_1<br />          and wfc.wfconfig_code = t.wfconfig_code<br />   and t.assetclass3 = d3.assettype3_id<br />   group by alias_p.pendingid, alias_p.workitemid, alias_p.operationid,<br />   alias_p.operationkey, alias_p.title, alias_p.sendercn, alias_p.operatedes, alias_p.pendingstate,<br />   alias_p.parameter, alias_p.createdate, alias_p.deptname, alias_p.completeddate , alias_p.openstate ,<br />   pd.name, w.processinstanceid<br />   order by alias_p.createdate desc<br />得到统计数据如下：<br />C:\Documents and Settings\ibm&gt;sqlplus /nolog</p>
						<p>SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 9月 10 19:27:33 2007</p>
						<p>Copyright (c) 1982, 2005, Oracle.  All rights reserved.</p>
						<p>SQL&gt; conn <a href="mailto:jic/jic@name">jic/jic@name</a><br />已连接。<br />SQL&gt; set autotrace traceonly<br />SQL&gt; select alias_p.pendingid, alias_p.workitemid, alias_p.operationid,<br />  2     alias_p.operationkey, alias_p.title, alias_p.sendercn, alias_p.operatedes, alias_p.pendingstate,<br />  3     alias_p.parameter, alias_p.createdate, alias_p.deptname, alias_p.completeddate , alias_p.openstate ,<br />  4     pd.name, w.processinstanceid<br />  5     --,T.ASSETCLASS3  ASSET<br />  6     ,f_assetlink(d3.typename) ASSET<br />  7     --,eam_db.concatassetname( alias_p.operationkey, alias_p.operationid )  asset<br />  8     from WF_Pending alias_p, WF_WorkItem w,<br />  9     WF_ProcessDefinition pd, WF_ProcessInstance pi<br /> 10     , tb_asset_dizhiyihao T,dic_app_wfconfig wfc,dic_app_assettype3 d3<br /> 11     where alias_p.ownerid='qinxue'<br /> 12     and alias_p.pendingstate in(0,3,5,7,9,10,11,12)<br /> 13     and (alias_p.deptname='审控部信息处' or alias_p.deptname='' or alias_p.deptname is null)<br /> 14     and w.workitemid = alias_p.workitemid<br /> 15     and pi.processinstanceid = w.processinstanceid<br /> 16     and pi.completeddate is null<br /> 17     and pd.processdefinitionid = w.processdefinitionid<br /> 18     AND    t.pk_businessid = alias_p.operationid<br /> 19            and alias_p.operationkey = wfc.memo_1<br /> 20            and wfc.wfconfig_code = t.wfconfig_code<br /> 21     and t.assetclass3 = d3.assettype3_id<br /> 22     group by alias_p.pendingid, alias_p.workitemid, alias_p.operationid,<br /> 23     alias_p.operationkey, alias_p.title, alias_p.sendercn, alias_p.operatedes, alias_p.pendingstate,<br /> 24     alias_p.parameter, alias_p.createdate, alias_p.deptname, alias_p.completeddate , alias_p.openstate ,<br /> 25     pd.name, w.processinstanceid<br /> 26     order by alias_p.createdate desc;</p>
						<p>已选择30行。</p>
						<p>
								<br />执行计划<br />----------------------------------------------------------<br />   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=19 Card=1 Bytes=205)<br />   1    0   SORT (GROUP BY) (Cost=19 Card=1 Bytes=205)<br />   2    1     NESTED LOOPS (Cost=17 Card=1 Bytes=205)<br />   3    2       HASH JOIN (Cost=16 Card=1 Bytes=191)<br />   4    3         HASH JOIN (Cost=11 Card=1 Bytes=183)<br />   5    4           NESTED LOOPS (Cost=8 Card=1 Bytes=167)<br />   6    5             NESTED LOOPS (Cost=7 Card=1 Bytes=139)<br />   7    6               NESTED LOOPS (Cost=6 Card=1 Bytes=134)<br />   8    7                 TABLE ACCESS (FULL) OF 'WF_PENDING' (Cost=5<br />          Card=1 Bytes=111)</p>
						<p>   9    7                 TABLE ACCESS (BY INDEX ROWID) OF 'WF_WORKITE<br />          M' (Cost=1 Card=1 Bytes=23)</p>
						<p>  10    9                   INDEX (UNIQUE SCAN) OF 'SYS_C004347' (UNIQ<br />          UE)</p>
						<p>  11    6               TABLE ACCESS (BY INDEX ROWID) OF 'WF_PROCESSIN<br />          STANCE' (Cost=1 Card=1 Bytes=5)</p>
						<p>  12   11                 INDEX (UNIQUE SCAN) OF 'SYS_C004334' (UNIQUE<br />          )</p>
						<p>  13    5             TABLE ACCESS (BY INDEX ROWID) OF 'WF_PROCESSDEFI<br />          NITION' (Cost=1 Card=1 Bytes=28)</p>
						<p>  14   13               INDEX (UNIQUE SCAN) OF 'SYS_C004329' (UNIQUE)<br />  15    4           TABLE ACCESS (FULL) OF 'DIC_APP_WFCONFIG' (Cost=2<br />          Card=24 Bytes=384)</p>
						<p>  16    3         TABLE ACCESS (FULL) OF 'TB_ASSET_DIZHIYIHAO' (Cost=4<br />           Card=310 Bytes=2480)</p>
						<p>  17    2       TABLE ACCESS (BY INDEX ROWID) OF 'DIC_APP_ASSETTYPE3'<br />          (Cost=1 Card=1 Bytes=14)</p>
						<p>  18   17         INDEX (UNIQUE SCAN) OF 'PK_DIC_APP_ASSETTYPE3' (UNIQ<br />          UE)</p>
						<p> </p>
						<p> </p>
						<p>统计信息<br />----------------------------------------------------------<br />          6  recursive calls<br />          0  db block gets<br />        847  consistent gets<br />          0  physical reads<br />          0  redo size<br />       4102  bytes sent via SQL*Net to client<br />        383  bytes received via SQL*Net from client<br />          3  SQL*Net roundtrips to/from client<br />          1  sorts (memory)<br />          0  sorts (disk)</p>
						<p>其中排序由101变为1次<br />一致读降为847。下降非常客观<br />关联调用仅有6次。<br />此sql性能优化非常可观。至此优化结束：)</p>
				</font>
		</span><img src ="http://www.blogjava.net/kebo/aggbug/144078.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kebo/" target="_blank">kebo</a> 2007-09-10 19:35 <a href="http://www.blogjava.net/kebo/archive/2007/09/10/144078.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用mv做跨</title><link>http://www.blogjava.net/kebo/archive/2007/08/14/136693.html</link><dc:creator>kebo</dc:creator><author>kebo</author><pubDate>Tue, 14 Aug 2007 07:32:00 GMT</pubDate><guid>http://www.blogjava.net/kebo/archive/2007/08/14/136693.html</guid><wfw:comment>http://www.blogjava.net/kebo/comments/136693.html</wfw:comment><comments>http://www.blogjava.net/kebo/archive/2007/08/14/136693.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kebo/comments/commentRss/136693.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kebo/services/trackbacks/136693.html</trackback:ping><description><![CDATA[数据库迁移过程中需要目标数据库和原数据库结构相同和数据是最新。<br />为了保持最新数据和快速切换就不可以利用exp/imp的方式，利用data guard则有平台的问题。<br />在这种情况下，可以利用on prebuilt table选项创建mv。然后同步运行一段时间。一次切换，删除<br />mv，这种情况下可以保持同名的表。mv删除。达到数据同步，切换的目标。<br /><img src ="http://www.blogjava.net/kebo/aggbug/136693.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kebo/" target="_blank">kebo</a> 2007-08-14 15:32 <a href="http://www.blogjava.net/kebo/archive/2007/08/14/136693.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分析函数一例</title><link>http://www.blogjava.net/kebo/archive/2007/07/17/130889.html</link><dc:creator>kebo</dc:creator><author>kebo</author><pubDate>Tue, 17 Jul 2007 08:55:00 GMT</pubDate><guid>http://www.blogjava.net/kebo/archive/2007/07/17/130889.html</guid><wfw:comment>http://www.blogjava.net/kebo/comments/130889.html</wfw:comment><comments>http://www.blogjava.net/kebo/archive/2007/07/17/130889.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kebo/comments/commentRss/130889.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kebo/services/trackbacks/130889.html</trackback:ping><description><![CDATA[select z.a,z.b,z.c
  from (select   lag(t.a,2)over(order by t.a) pp_val,
                 lag(t.a,1)over(order by t.a) p_val,
                 t.a,
                 lead(t.a,1)over(order by t.a) n_val,
                 lead(t.a,2)over(order by t.a) nn_val,
                 t.b,t.c from test2 t) z
 where z.a = '1'
   and ((z.p_val = '1' and z.pp_val = '1')
       or (z.p_val = '1' and z.n_val = '1')
       or (z.n_val = '1' and z.nn_val = '1'));<img src ="http://www.blogjava.net/kebo/aggbug/130889.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kebo/" target="_blank">kebo</a> 2007-07-17 16:55 <a href="http://www.blogjava.net/kebo/archive/2007/07/17/130889.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>夜读tom感悟</title><link>http://www.blogjava.net/kebo/archive/2007/07/11/129475.html</link><dc:creator>kebo</dc:creator><author>kebo</author><pubDate>Tue, 10 Jul 2007 16:15:00 GMT</pubDate><guid>http://www.blogjava.net/kebo/archive/2007/07/11/129475.html</guid><wfw:comment>http://www.blogjava.net/kebo/comments/129475.html</wfw:comment><comments>http://www.blogjava.net/kebo/archive/2007/07/11/129475.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kebo/comments/commentRss/129475.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kebo/services/trackbacks/129475.html</trackback:ping><description><![CDATA[查询结果xml化： select dbms_xmlquery.getXML(' select  * from test')from dual;
表的历史记录：执行：begin
dbms_wm.enableversioning('tablename','VIEW_WO_OVERWRITE')
则对这个表的cud操作都会记录历史，这个在系统中做历史再好不过了。
还有终于被tom说明：分析函数原来就是矩阵运算，呵呵，终于知道这类函数的数学原理了，呵呵，真爽，总算知道怎么理解了。
还有宝贝儿遇到新项目，需要很深的会计知识了，还被老板乱说，导致不好工作，希望她不要烦恼，开心工作<img src ="http://www.blogjava.net/kebo/aggbug/129475.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kebo/" target="_blank">kebo</a> 2007-07-11 00:15 <a href="http://www.blogjava.net/kebo/archive/2007/07/11/129475.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>lighttped(window)+scgi+rails配置方式</title><link>http://www.blogjava.net/kebo/archive/2007/01/02/91447.html</link><dc:creator>kebo</dc:creator><author>kebo</author><pubDate>Tue, 02 Jan 2007 13:08:00 GMT</pubDate><guid>http://www.blogjava.net/kebo/archive/2007/01/02/91447.html</guid><wfw:comment>http://www.blogjava.net/kebo/comments/91447.html</wfw:comment><comments>http://www.blogjava.net/kebo/archive/2007/01/02/91447.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kebo/comments/commentRss/91447.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kebo/services/trackbacks/91447.html</trackback:ping><description><![CDATA[<p>配置:server.modules <br />server.modules              = (<br />                                "mod_rewrite",<br />                                "mod_redirect",<br />                                "mod_access",<br />                                "mod_status",<br />                                <font color="#ff0099">"mod_scgi",<br /></font>                                "mod_accesslog" )<br />配置<br />index-file.names            = ( "index.php", "index.html",<br />                                            "index.htm", "default.htm" )<br />#### accesslog module<br />accesslog.filename          = "c:/depot/log/access.log"<br />static-file.exclude-extensions = ( ".php", ".pl", ".fcgi<font color="#ff0099">",".scgi</font>" )       标红的需要加上<br /><br />## bind to port (default: 80)<br />server.port                = 8080------------------访问端口,我设置8080<br /><br />## error-handler for status 404<br />server.error-handler-404   = "/dispatch.scgi"<br />-----------------------------------------------<br />scgi.server = ("dispatch.scgi" =&gt; ((<br />"host" =&gt; "127.0.0.1",<br />"port" =&gt; 9999,<br />"check-local" =&gt; "disable"<br />)) )</p>
		<p>scgi.debug=3</p>
		<p>status.status-url = "/server-status"<br />status.config-url = "/server-config"<br /><br />-------------------------------------<br />## server.virtual-* options<br />server.document-root        = "c:/depot/public"<br />记得这个需要设置到public目录,不然按默认的rails生成的文档一些东西访问不来的<br />-----------------------------------------------------------------------------------------------------<br />需要注意的是你开发的程序需要放在c盘下,不然找不到config/scgi.yaml这个文件<br />然后lighttpd必须装在c盘下(当前版本下1.4.11)</p><img src ="http://www.blogjava.net/kebo/aggbug/91447.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kebo/" target="_blank">kebo</a> 2007-01-02 21:08 <a href="http://www.blogjava.net/kebo/archive/2007/01/02/91447.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sqlplus执行@sql.sql的错误</title><link>http://www.blogjava.net/kebo/archive/2006/12/27/90390.html</link><dc:creator>kebo</dc:creator><author>kebo</author><pubDate>Wed, 27 Dec 2006 14:24:00 GMT</pubDate><guid>http://www.blogjava.net/kebo/archive/2006/12/27/90390.html</guid><wfw:comment>http://www.blogjava.net/kebo/comments/90390.html</wfw:comment><comments>http://www.blogjava.net/kebo/archive/2006/12/27/90390.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kebo/comments/commentRss/90390.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kebo/services/trackbacks/90390.html</trackback:ping><description><![CDATA[今天给数据库执行@spcreate.sql老是出
<br />SP2-0734:unknown command beginning "spcreate.s..." - rest of line ignored.

<br />郁闷坏了。经过一番折腾原来是
<br />solution Description:<br /> =====================

<br />You need to enter a valid SQL*Plus command. 

<br />In this case, you cannot start svrmgrl from within SQL*Plus, <br />you have to start 
svrmgrl from the command prompt.

<br />This error will also occur when trying to execute a <br /><font color="#ff0000"><b>the @ 
symbol is mapped to the key 'Kill'</b></font> from the user's keyboard.  <br />The
way to find out the current keyboard mapping in a unix environment is 
using the command 'stty -a'.  <br />The way to correct problem is to map 'Kill' 
to some other keyboard symbol.  <br />The command example would be 
'<b><font color="#ff0000">stty kill ^U</font></b>'.  <br />Having remapped the key you would then log into SQL*Plus
and execute script.<br /> -------------------------------纪念一下<br />如果出现空行报错的话
记得执行:
<br />SET SQLBLANKLINES ON<img src ="http://www.blogjava.net/kebo/aggbug/90390.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kebo/" target="_blank">kebo</a> 2006-12-27 22:24 <a href="http://www.blogjava.net/kebo/archive/2006/12/27/90390.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常看帖子的好处，特别是高手掐架的帖子</title><link>http://www.blogjava.net/kebo/archive/2006/11/01/78391.html</link><dc:creator>kebo</dc:creator><author>kebo</author><pubDate>Tue, 31 Oct 2006 20:11:00 GMT</pubDate><guid>http://www.blogjava.net/kebo/archive/2006/11/01/78391.html</guid><wfw:comment>http://www.blogjava.net/kebo/comments/78391.html</wfw:comment><comments>http://www.blogjava.net/kebo/archive/2006/11/01/78391.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kebo/comments/commentRss/78391.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kebo/services/trackbacks/78391.html</trackback:ping><description><![CDATA[呵呵，最近吵架比较多，我们项目和另公司合作，经常出现两家吵架的事件，小弟不信参与其中。通过具体实践，发现我现在很容易发现别人说话的漏洞。然后常常质问对方大哥无法可说，呵呵，痛快。
我想这是 我比较最近比较喜欢高手们争论话题的帖子，建议想提高吵架水平的人多学学(别用在mm身上^^)<img src ="http://www.blogjava.net/kebo/aggbug/78391.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kebo/" target="_blank">kebo</a> 2006-11-01 04:11 <a href="http://www.blogjava.net/kebo/archive/2006/11/01/78391.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>听oracle讲座感受</title><link>http://www.blogjava.net/kebo/archive/2006/10/03/73244.html</link><dc:creator>kebo</dc:creator><author>kebo</author><pubDate>Mon, 02 Oct 2006 17:43:00 GMT</pubDate><guid>http://www.blogjava.net/kebo/archive/2006/10/03/73244.html</guid><wfw:comment>http://www.blogjava.net/kebo/comments/73244.html</wfw:comment><comments>http://www.blogjava.net/kebo/archive/2006/10/03/73244.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kebo/comments/commentRss/73244.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kebo/services/trackbacks/73244.html</trackback:ping><description><![CDATA[<div align="left">  今天听了下oracle讲座,一个感受，以后不敢操作数据库了，发现对大多数数据库命令产生的后果和影响都不是很清楚。想起以前切换双机<br /><br />的时候也出现eygle说的问题，然来真的对数据库基础知识预备不足啊。感觉以前真是可以称为“虎胆”哦。难怪老幕以前佩服我！！！卡卡卡。<br /><br />恩，感觉oracle入门现在都够不上，不敢再给别人解决问题:)免得惹笑话。梳理了一下，估计也就对sql,集合的理解熟悉点，有点把我哦。低<br /><br />调，低调......学习学习......<br /></div><img src ="http://www.blogjava.net/kebo/aggbug/73244.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kebo/" target="_blank">kebo</a> 2006-10-03 01:43 <a href="http://www.blogjava.net/kebo/archive/2006/10/03/73244.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>