<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sdt.sumida.com.cn:8080/cs/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">wego</title><subtitle type="html" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/wego/atom.aspx</id><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/wego/default.aspx" /><link rel="self" type="application/atom+xml" href="http://sdt.sumida.com.cn:8080/cs/blogs/wego/atom.aspx" /><generator uri="http://communityserver.org" version="3.1.20917.1142">Community Server</generator><updated>2006-05-08T17:25:00Z</updated><entry><title>Oracle复合数据结构一个需要注意点</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2009/01/06/racle.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2009/01/06/racle.aspx</id><published>2009-01-06T03:06:00Z</published><updated>2009-01-06T03:06:00Z</updated><content type="html">&lt;span style="FONT-SIZE:10pt;COLOR:black;mso-bidi-font-family:Arial;mso-ascii-font-family:Arial;mso-hansi-font-family:Arial;"&gt;&lt;font face="宋体"&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span&gt;&lt;font size="3"&gt;CREATE OR REPLACE TYPE t_str_array AS TABLE OF VARCHAR2 (500);&lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;SELECT b.COLUMN_VALUE&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;FROM bd_pc_type a, TABLE (t_str_array (&amp;#39;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;手提&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;&amp;#39;, &amp;#39;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;工作站&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;&amp;#39;, &amp;#39;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;手提机&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;&amp;#39;)) b&lt;/font&gt;&lt;/span&gt;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;WHERE a.code(+) = b.COLUMN_VALUE AND a.code IS NULL&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;span&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font size="3"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;无记录返回&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;, &lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;若改成&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font size="3"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;span&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;SELECT &lt;strong&gt;a.code,&lt;/strong&gt; b.COLUMN_VALUE&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;FROM bd_pc_type a, TABLE (t_str_array (&amp;#39;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;手提&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;&amp;#39;, &amp;#39;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;工作站&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;&amp;#39;, &amp;#39;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;手提机&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;&amp;#39;)) b&lt;/font&gt;&lt;/span&gt;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;WHERE a.code(+) = b.COLUMN_VALUE AND a.code IS NULL&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;span&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;font size="3"&gt;有记录返回&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=11556" width="1" height="1"&gt;</content><author><name>wego</name><uri>http://sdt.sumida.com.cn:8080/cs/members/wego.aspx</uri></author></entry><entry><title>LINQ 无短路</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2008/12/27/linq.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2008/12/27/linq.aspx</id><published>2008-12-27T05:03:00Z</published><updated>2008-12-27T05:03:00Z</updated><content type="html">&lt;p&gt;昨天在用 LINQ 时, 发现其不像其 if 或其它条件表达式一样会自动产生短路效应. 若各位刚好用到时请加以注意, 避免不必要的运行时错误.&lt;/p&gt;
&lt;p&gt;请见如下 Code:&lt;/p&gt;
&lt;p&gt;public static void SetPageInfo(BasePage page)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataTable rights = GetOperationRights();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var relatedRights = from right in rights.AsEnumerable()&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where (right.Field&amp;lt;string&amp;gt;(&amp;quot;module_code&amp;quot;) == null || right.Field&amp;lt;string&amp;gt;(&amp;quot;module_code&amp;quot;).Equals(page.Module)) &amp;amp;&amp;amp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (right.Field&amp;lt;string&amp;gt;(&amp;quot;function_group_code&amp;quot;) == null || right.Field&amp;lt;string&amp;gt;(&amp;quot;function_group_code&amp;quot;).Equals(page.Group)) &amp;amp;&amp;amp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (right.Field&amp;lt;string&amp;gt;(&amp;quot;function_key&amp;quot;) == null || right.Field&amp;lt;string&amp;gt;(&amp;quot;function_key&amp;quot;).Equals(page.Member))&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; orderby right.Field&amp;lt;string&amp;gt;(&amp;quot;module_code&amp;quot;) descending,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; right.Field&amp;lt;string&amp;gt;(&amp;quot;function_group_code&amp;quot;) descending,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; right.Field&amp;lt;string&amp;gt;(&amp;quot;function_key&amp;quot;) descending&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select new&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CanQry = right.Field&amp;lt;decimal&amp;gt;(&amp;quot;can_qry&amp;quot;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CanNew = right.Field&amp;lt;decimal&amp;gt;(&amp;quot;can_new&amp;quot;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CanEdit = right.Field&amp;lt;decimal&amp;gt;(&amp;quot;can_edt&amp;quot;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CanDel = right.Field&amp;lt;decimal&amp;gt;(&amp;quot;can_del&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var relatedRight = relatedRights.FirstOrDefault();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/p&gt;
&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;当实际某 right.Field&amp;lt;string&amp;gt;(&amp;quot;module_code&amp;quot;) 为 null 时, 该 Code 会产生运行时错误. 故&amp;nbsp;where 子句需改成如下:&lt;/p&gt;
&lt;p&gt;where (right.Field&amp;lt;string&amp;gt;(&amp;quot;module_code&amp;quot;) == null || (right.Field&amp;lt;string&amp;gt;(&amp;quot;module_code&amp;quot;) ?? String.Empty).Equals(page.Module)) &amp;amp;&amp;amp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (right.Field&amp;lt;string&amp;gt;(&amp;quot;function_group_code&amp;quot;) == null || (right.Field&amp;lt;string&amp;gt;(&amp;quot;function_group_code&amp;quot;) ?? String.Empty).Equals(page.Group)) &amp;amp;&amp;amp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (right.Field&amp;lt;string&amp;gt;(&amp;quot;function_key&amp;quot;) == null || (right.Field&amp;lt;string&amp;gt;(&amp;quot;function_key&amp;quot;) ?? String.Empty).Equals(page.Member))&lt;/p&gt;
&lt;p&gt;令外, LINQ 中已把原 DBNull 转成&amp;nbsp;DotNet 的 null, 所以不用 Convert.IsDBNull(right.Field&amp;lt;string&amp;gt;(&amp;quot;module_code&amp;quot;)).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=11469" width="1" height="1"&gt;</content><author><name>wego</name><uri>http://sdt.sumida.com.cn:8080/cs/members/wego.aspx</uri></author></entry><entry><title>UpdatePanel &amp; UpdateProgress &amp; Download File 的相关问题</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2008/10/20/updatepanel-amp-updateprogress-amp-download-file.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2008/10/20/updatepanel-amp-updateprogress-amp-download-file.aspx</id><published>2008-10-20T05:40:00Z</published><updated>2008-10-20T05:40:00Z</updated><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;程序中有时会因要执行业务比较复杂, 运行时间长的一系统操作, 需要显示如 &amp;quot;执行中 ..&amp;quot; 等用户友好提示,&amp;nbsp; 可用ASP.NET AJAX 的&amp;nbsp;UpdatePanel &amp;amp; UpdateProgress 控件完成. 但若执行结果需要下载文件时, 则会出现执行完成但文件却下载不了的情况. 因为 UpdateProgress&amp;nbsp;是异步进行中.&amp;nbsp; 解决方法可以建立一个 &amp;#39;DownloadFile.aspx&amp;#39; 页面作辅助, 请见如下主要代码片断&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;-------&amp;nbsp; Data.aspx -----------&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;lt;asp:ScriptManager ID=&amp;quot;ScriptManager&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;lt;asp:UpdatePanel ID=&amp;quot;UpdatePanel1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ContentTemplate&amp;gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:UpdateProgress ID=&amp;quot;UpdateProgress1&amp;quot; runat=&amp;quot;server&amp;quot; DisplayAfter=&amp;quot;2&amp;quot; DynamicLayout=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ProgressTemplate&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;img src=&amp;#39;&amp;lt;%=CommonUrl.Images %&amp;gt;wait_clock.gif&amp;#39; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span id=&amp;#39;spanProgressNote&amp;#39;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ProgressTemplate&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/asp:UpdateProgress&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ContentTemplate&amp;gt;&lt;br /&gt;&amp;lt;/asp:UpdatePanel&amp;gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;lt;script language=&amp;quot;javascript&amp;quot;&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(initializeRequestHandler);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function initializeRequestHandler(sender, e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var postBackElementId = e.get_postBackElement().id;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (postBackElementId) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case &amp;#39;&amp;lt;%= btnSearch.ClientID %&amp;gt;&amp;#39;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; spanProgressNote.innerHTML = &amp;#39;Loading ..&amp;#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case &amp;#39;&amp;lt;%= imgExport.ClientID %&amp;gt;&amp;#39;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; spanProgressNote.innerHTML = &amp;#39;Exporting ..&amp;#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;lt;/script&amp;gt;&lt;/p&gt;
&lt;p&gt;-------&amp;nbsp; Data.cs -----------&amp;nbsp;&lt;/p&gt;
&lt;p&gt;protected void imgExport_Click(object sender, ImageClickEventArgs e)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // SimpleWebUtils.DownloadFile(Response, filePath, Path.GetFileName(filePath));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 不能直接在当前页下载文件&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ScriptManager.RegisterStartupScript(this, this.GetType(), &amp;quot;RegisterStartupScript&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , String.Format(&amp;quot;window.navigate(&amp;#39;../Control/&amp;#39;DownloadFile.aspx?path={0}&amp;#39;);&amp;quot;, Server.UrlEncode(filePath)), true);&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //ScriptManager.RegisterStartupScript(this, this.GetType(), &amp;quot;RegisterStartupScript&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;, String.Format(&amp;quot;window.navigate(&amp;#39;{0}&amp;#39;);&amp;quot;, fileUrl), true);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 用这种方式可以不用&amp;nbsp;&amp;#39;&amp;#39;DownloadFile.aspx&amp;#39; 页面但下载文件直接打开是用网页方式而不是实际文件方式 (如: Excel)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;-------&amp;nbsp; DownloadFile.cs -----------&lt;/p&gt;
&lt;p&gt;&amp;nbsp;protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string path = Request.QueryString[&amp;quot;path&amp;quot;];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SimpleWebUtils.DownloadFile(Response, path, Path.GetFileName(path));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ScriptManager.RegisterStartupScript(this, this.GetType(), &amp;quot;RegisterStartupScript&amp;quot;, &amp;quot;window.close();&amp;quot;, true);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=10727" width="1" height="1"&gt;</content><author><name>wego</name><uri>http://sdt.sumida.com.cn:8080/cs/members/wego.aspx</uri></author></entry><entry><title>当心 Oracle Procedure 中的 IN 参数也会被你无意中修改了它的值</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2008/10/08/oracle-procedure-in.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2008/10/08/oracle-procedure-in.aspx</id><published>2008-10-08T07:29:00Z</published><updated>2008-10-08T07:29:00Z</updated><content type="html">&lt;p&gt;在 Oracle Procedure 中使用 IN 参数似乎很好地对该参数起到保护作用, 其实不然! 请看如下 Code&lt;/p&gt;
&lt;p&gt;-- Spec Part&amp;nbsp;&lt;/p&gt;
&lt;p&gt;PACKAGE TEST&lt;br /&gt;IS&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt; g1&amp;nbsp;&amp;nbsp; NUMBER;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; PROCEDURE proc1;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; PROCEDURE proc2 (p1 IN NUMBER);&lt;br /&gt;END;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;--&amp;nbsp;Body Part&lt;/p&gt;
&lt;p&gt;&amp;nbsp;PACKAGE BODY TEST&lt;br /&gt;IS&lt;br /&gt;&amp;nbsp;&amp;nbsp; PROCEDURE proc1&lt;br /&gt;&amp;nbsp;&amp;nbsp; IS&lt;br /&gt;&amp;nbsp;&amp;nbsp; BEGIN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g1 := 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc2 (g1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBMS_OUTPUT.put_line (&amp;#39;g1=&amp;#39; || g1);&lt;br /&gt;&amp;nbsp;&amp;nbsp; END;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; PROCEDURE proc2 (&lt;strong&gt;p1 IN NUMBER&lt;/strong&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp; IS&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt; c1&amp;nbsp;&amp;nbsp; CONSTANT NUMBER := p1;&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp; BEGIN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt; --p1 := p1 + 1;&amp;nbsp;&amp;nbsp;这句是编译不通过的, 似乎已对 IN 参数保护了.&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBMS_OUTPUT.put_line (&amp;#39;p1=&amp;#39; || p1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBMS_OUTPUT.put_line (&amp;#39;c1=&amp;#39; || c1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;g1 := g1 + 1;&amp;nbsp; -- 这句间接地改变了 IN 参数值!&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBMS_OUTPUT.put_line (&amp;#39;after p1=&amp;#39; || p1);&amp;nbsp;&amp;nbsp; &lt;strong&gt;-- 已经被改了!&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;DBMS_OUTPUT.put_line (&amp;#39;after c1=&amp;#39; || c1);&amp;nbsp;&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp; END;&lt;br /&gt;END;&lt;/p&gt;
&lt;p&gt;运行 proc1 后输出:&lt;/p&gt;
&lt;p&gt;p1=1&lt;br /&gt;c1=1&lt;br /&gt;after p1=2&lt;br /&gt;after c1=1&lt;br /&gt;g1=2&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;总结: &lt;/p&gt;
&lt;p&gt;1) 若要确保过程内任意地方都能访问到 IN 参数的初始值, 需要使用附加常量&lt;/p&gt;
&lt;p&gt;2) 尽可能少用全局变量 (风险很大)&lt;/p&gt;
&lt;p&gt;3) 其它非 Oracle 数据库也可能出现该情况.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=10608" width="1" height="1"&gt;</content><author><name>wego</name><uri>http://sdt.sumida.com.cn:8080/cs/members/wego.aspx</uri></author><category term="Oracle" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/tags/Oracle/default.aspx" /></entry><entry><title>ASP.NET 自定义控件之解析标签内属性内嵌</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2008/09/04/asp-net.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2008/09/04/asp-net.aspx</id><published>2008-09-04T03:13:00Z</published><updated>2008-09-04T03:13:00Z</updated><content type="html">&lt;p&gt;实现如下:&lt;/p&gt;
&lt;p&gt;&amp;lt;smic:Note runat=server ID=&amp;#39;NoteInfo&amp;#39;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;b&amp;gt;Development Tools&amp;lt;/b&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;C#, JAVA, PHP&lt;br /&gt;&amp;lt;/smic:Note&amp;gt; &lt;/p&gt;
&lt;p&gt;代码片段:&lt;/p&gt;
&lt;p&gt;[ToolboxBitmap(typeof(Label))]&lt;br /&gt;[AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)]&lt;br /&gt;[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]&lt;br /&gt;[ToolboxData(&amp;quot;&amp;lt;{0}:Note runat=\&amp;quot;server\&amp;quot;&amp;gt;&amp;lt;/{0}:Note&amp;gt;&amp;quot;), &lt;strong&gt;DefaultProperty(&amp;quot;Message&amp;quot;), ParseChildren(false),&lt;/strong&gt; Designer(&amp;quot;System.Web.UI.Design.WebControls.LabelDesigner, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&amp;quot;)]&lt;br /&gt;[ControlBuilder(typeof(LabelControlBuilder)),&lt;strong&gt; ControlValueProperty(&amp;quot;Message&amp;quot;),&lt;/strong&gt; DataBindingHandler(&amp;quot;System.Web.UI.Design.TextDataBindingHandler, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&amp;quot;)]&lt;br /&gt;public class Note : WebControl&lt;br /&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;strong&gt;PersistenceMode(PersistenceMode.InnerDefaultProperty)&lt;/strong&gt;, Bindable(true), Localizable(true)]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string Message&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return ViewState[&amp;quot;Message&amp;quot;] as string; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { ViewState[&amp;quot;Message&amp;quot;] = value; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected &lt;strong&gt;override&lt;/strong&gt; void &lt;strong&gt;AddParsedSubObject&lt;/strong&gt;(object obj)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt; // 必须 Override&amp;nbsp;WebControl 的 AddParsedSubObject 方法&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.HasControls())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base.AddParsedSubObject(obj);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (obj is LiteralControl)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Message = ((LiteralControl)obj).Text;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string message = this.Message;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (message.Length != 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Message = string.Empty;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base.AddParsedSubObject(new LiteralControl(message));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base.AddParsedSubObject(obj);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected override void Render(HtmlTextWriter output)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output.AddAttribute(&amp;quot;class&amp;quot;, &amp;quot;container&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output.RenderBeginTag(HtmlTextWriterTag.Div);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;output.Write(this.Message);&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output.RenderEndTag();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=10189" width="1" height="1"&gt;</content><author><name>wego</name><uri>http://sdt.sumida.com.cn:8080/cs/members/wego.aspx</uri></author></entry><entry><title>Lambda 不支持 yield</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2008/07/08/lambda-yield.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2008/07/08/lambda-yield.aspx</id><published>2008-07-08T07:50:00Z</published><updated>2008-07-08T07:50:00Z</updated><content type="html">&lt;p&gt;今天将 Lambda&amp;nbsp;与 yield 结合起来使用, 结果编译不通过. (如下)&lt;/p&gt;
&lt;p&gt;public IEnumerable&amp;lt;int&amp;gt; DeletedIDs&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var deletedIDs = new int[]{123, 456};&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Array.ForEach(deletedIDs, i =&amp;gt; (yield return i));&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;要写成如下:&lt;/p&gt;
&lt;p&gt;public IEnumerable&amp;lt;int&amp;gt; DeletedIDs&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var deletedIDs = new int[]{123, 456};&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foreach (int deletedID in deletedIDs)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yield return deletedID;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=9585" width="1" height="1"&gt;</content><author><name>wego</name><uri>http://sdt.sumida.com.cn:8080/cs/members/wego.aspx</uri></author></entry><entry><title>Oracle 处理数据高并发响应</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2008/07/03/oracle-1.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2008/07/03/oracle-1.aspx</id><published>2008-07-03T01:00:00Z</published><updated>2008-07-03T01:00:00Z</updated><content type="html">&lt;p&gt;某些系统可能对系统应付数据高并发的响应要求比较高 (如: 飞行航空订票系统). 本文采用 Oracle 的 lock table 解决之.&lt;/p&gt;
&lt;p&gt;Procedure 中关键 code 如下:&lt;/p&gt;
&lt;p&gt;-------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;lock table tb_book_ticket in share mode;&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;insert into tb_book_ticket (id, scheduled_flight, ticket_no, book_time) values (ID.nextval, v_scheduled_flight, v_ticket_no, SYSDATE);&amp;nbsp;&amp;nbsp;&amp;nbsp; -- mark1&lt;/p&gt;
&lt;p&gt;...&amp;nbsp;&amp;nbsp;&amp;nbsp; -- mark2&lt;/p&gt;
&lt;p&gt;select count(*) into v_book_count from tb_book_ticket where scheduled_flight = v_scheduled_flight;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- mark3&lt;/p&gt;
&lt;p&gt;if v_book_count &amp;lt;= v_book_max_count then&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; v_result := &amp;#39;book successfully&amp;#39;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; commit;&lt;/p&gt;
&lt;p&gt;else&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; v_result := &amp;#39;book unsuccessfully&amp;#39;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rollback;&lt;/p&gt;
&lt;p&gt;end if;&lt;/p&gt;
&lt;p&gt;return v_result;&lt;/p&gt;
&lt;p&gt;-------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;以上有2个地方需注意:&lt;/p&gt;
&lt;p&gt;1) 采用 lock table table_name in share mode 方式而非 lock table table_name in exclusive mode 提高并发性处理, 尽量减少不必要执行等待.&lt;/p&gt;
&lt;p&gt;2) 按常规思路, 可能会将 mark1 与 mark3 顺序交换, 但此举不行&lt;/p&gt;
&lt;p&gt;-------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;select count(*) into v_book_count from tb_book_ticket where scheduled_flight = v_scheduled_flight;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- mark3&lt;/p&gt;
&lt;p&gt;...&amp;nbsp;&amp;nbsp;&amp;nbsp; -- mark2&lt;/p&gt;
&lt;p&gt;if v_book_count &amp;lt; v_book_max_count then&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; insert into tb_book_ticket (id, scheduled_flight, ticket_no, book_time) values (ID.nextval, v_scheduled_flight, v_ticket_no, SYSDATE);&amp;nbsp;&amp;nbsp;&amp;nbsp; -- mark1&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- mark4&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; commit;&lt;/p&gt;
&lt;p&gt;end if;&lt;/p&gt;
&lt;p&gt;-------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;试想若 userA 执行到&amp;nbsp; mark4, 而同时 userB 执行到&amp;nbsp; mark3, 就可能会出现由于 userA&amp;nbsp; 尚未commit 而导致 userB 订到机票但实际没有座位的情况.&lt;/p&gt;
&lt;p&gt;若确希望使用常规逻辑来实现, 需要用到 Oracle 的表的读锁功能 (精细访问策略), 而此非本文范围, 且其对于SYS用户无效.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=9530" width="1" height="1"&gt;</content><author><name>wego</name><uri>http://sdt.sumida.com.cn:8080/cs/members/wego.aspx</uri></author><category term="Oracle" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/tags/Oracle/default.aspx" /></entry><entry><title>window.history.go(-N) 及页面自动刷新数据的解决方案</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2008/06/03/window-history-go-n.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2008/06/03/window-history-go-n.aspx</id><published>2008-06-03T08:07:00Z</published><updated>2008-06-03T08:07:00Z</updated><content type="html">&lt;p&gt;&lt;strong&gt;使用情况:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;1) 用户在 [查询页] 选取所需的 DropDown 项或填写查询的 TextBox 值&lt;/p&gt;
&lt;p&gt;2) 点击结果表格的一条记录链接进入 [编辑页] (不是弹出 Form 形式, 而是整个页面跳转)&lt;/p&gt;
&lt;p&gt;3) 在 [编辑页] 中修改有关项后保存 (保存后可能又进行修改后又保存)&lt;/p&gt;
&lt;p&gt;4) 按 [Close] button 回 [查询页] &lt;/p&gt;
&lt;p&gt;5) 要求 [查询页] 保留之前的查询状态 (即各DropDown, TextBox 项保留用户刚才选取或录入的值), 而表格数据则要求自动刷新 (因为刚才在 [编辑页] 中可能作了某些修改)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意事项:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;1) 因为 HTTP 的无状态性, 所以采用 Session 保留页面间的信息传递 (注意: 不能使用 URL 传递方式, 如:&amp;nbsp;window.location.href = &amp;#39;Search.aspx?serverRefreshed=yes&amp;#39;,&amp;nbsp;因为这样页面原状态将不可还原&amp;nbsp;)&lt;/p&gt;
&lt;p&gt;2) 由于 window.history.go(-N)&amp;nbsp; 后页面的 cs 代码不会执行, 故采用 Ajax 方式调用服务端代码&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;代码片断:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;----------------------------------------------------&lt;/p&gt;
&lt;p&gt;Edit.aspx:&lt;/p&gt;
&lt;p&gt;&amp;lt;asp:HiddenField ID=&amp;quot;hfPostCount&amp;quot; runat=&amp;quot;server&amp;quot;/&amp;gt; &lt;br /&gt;&amp;lt;asp:button id=&amp;quot;btnSave&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Save&amp;quot; OnClientClick=&amp;quot;document.getElementById(hfDataSaved).value = &amp;#39;Yes&amp;#39;&amp;quot; OnClick=&amp;quot;btnSave_Click&amp;quot;&amp;gt;&amp;lt;/asp:button&amp;gt;&lt;br /&gt;&amp;lt;input type=button id=&amp;quot;btnClose&amp;quot; value=&amp;quot;Close&amp;quot; onclick=&amp;quot;FormClose();&amp;quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;function FormClose()&lt;br /&gt;{&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (document.getElementById(hfDataSaved).value == &amp;#39;Yes&amp;#39;) RRSCore.SessionInfo.SetServerRefreshed(&amp;quot;No&amp;quot;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var postCount = document.getElementById(hfPostCount).value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; postCount++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; window.history.go(-postCount);&lt;br /&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;----------------------------------------------------&lt;/p&gt;
&lt;p&gt;Edit.aspx.cs:&lt;/p&gt;
&lt;p&gt;protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; if (!this.IsPostBack) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hfPostCount.Value = &amp;quot;0&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hfPostCount.Value = (int.Parse(hfPostCount.Value) + 1).ToString();&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; Page.ClientScript.RegisterStartupScript(Page.GetType(), &amp;quot;SetClientVariable&amp;quot;, &amp;quot;hfPostCount=&amp;#39;&amp;quot; + this.hfPostCount.ClientID.ToString() + &amp;quot;&amp;#39;;&amp;quot;, true); &amp;nbsp;&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;----------------------------------------------------&lt;/p&gt;
&lt;p&gt;Search.aspx&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;window.onload = function () {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (RRSCore.SessionInfo.GetServerRefreshed().value == &amp;#39;No&amp;#39;) document.forms[0].submit();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RRSCore.SessionInfo.SetServerRefreshed(&amp;quot;Yes&amp;quot;); &lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;----------------------------------------------------&lt;/p&gt;
&lt;p&gt;SessionInfo.cs (Ajax Source)&lt;/p&gt;
&lt;p&gt;namespace RRSCore&lt;br /&gt;{&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class SessionInfo&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [AjaxPro.AjaxMethod]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void SetServerRefreshed(string serverRefreshed)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HttpContext.Current.Session[&amp;quot;ServerRefreshed&amp;quot;] = serverRefreshed;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [AjaxPro.AjaxMethod]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static string GetServerRefreshed()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return HttpContext.Current.Session[&amp;quot;ServerRefreshed&amp;quot;];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;----------------------------------------------------&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=9198" width="1" height="1"&gt;</content><author><name>wego</name><uri>http://sdt.sumida.com.cn:8080/cs/members/wego.aspx</uri></author></entry><entry><title>Dot Net 2.0 使用3.5的 Linq</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2008/05/14/dot-net-2-0-3-5-linq.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2008/05/14/dot-net-2-0-3-5-linq.aspx</id><published>2008-05-14T05:38:00Z</published><updated>2008-05-14T05:38:00Z</updated><content type="html">&lt;p&gt;&amp;nbsp;注意事项:&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:10.5pt;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA;mso-bidi-font-size:12.0pt;mso-font-kerning:1.0pt;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;1) 前提是开发者机器要装有&lt;/span&gt;&lt;span style="FONT-SIZE:10.5pt;FONT-FAMILY:&amp;#39;Times New Roman&amp;#39;;mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA;mso-bidi-font-size:12.0pt;mso-font-kerning:1.0pt;"&gt;Framework 3.5, &lt;/span&gt;&lt;span style="FONT-SIZE:10.5pt;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA;mso-bidi-font-size:12.0pt;mso-font-kerning:1.0pt;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;引入&lt;/span&gt;&lt;span style="FONT-SIZE:10.5pt;FONT-FAMILY:&amp;#39;Times New Roman&amp;#39;;mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA;mso-bidi-font-size:12.0pt;mso-font-kerning:1.0pt;"&gt;Reference :&amp;nbsp;System.Core&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:10.5pt;FONT-FAMILY:&amp;#39;Times New Roman&amp;#39;;mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA;mso-bidi-font-size:12.0pt;mso-font-kerning:1.0pt;"&gt;2)&amp;nbsp; 若发布服务器没装 &lt;span style="FONT-SIZE:10.5pt;FONT-FAMILY:&amp;#39;Times New Roman&amp;#39;;mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA;mso-bidi-font-size:12.0pt;mso-font-kerning:1.0pt;"&gt;Framework 3.5, 需手工把&amp;nbsp;System.Core.dll 加入到 bin 下再发布&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;===========================================&amp;nbsp;&lt;/p&gt;
&lt;p&gt;using System.Linq;&lt;/p&gt;
&lt;p&gt;..&lt;/p&gt;
&lt;p&gt;string[] list = new string[] { &amp;quot;mary&amp;quot;, &amp;quot;tom&amp;quot;, &amp;quot;david&amp;quot;, &amp;quot;cathy&amp;quot;, &amp;quot;tom&amp;quot; };&amp;nbsp;&amp;nbsp;&amp;nbsp; // 除数组外,&amp;nbsp; 其它集合类也可 (如: List, &lt;span style="FONT-SIZE:10.5pt;FONT-FAMILY:&amp;#39;Times New Roman&amp;#39;;mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA;mso-bidi-font-size:12.0pt;mso-font-kerning:1.0pt;"&gt;Hashtable &lt;/span&gt;, Dictionary)&lt;br /&gt;IEnumerable&amp;lt;string&amp;gt; result;&lt;/p&gt;
&lt;p&gt;//&lt;br /&gt;Console.WriteLine(&amp;quot;--- &amp;#39;FirstOrDefault&amp;#39; --&amp;quot;);&lt;br /&gt;result = Enumerable.Where&amp;lt;string&amp;gt;(list,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delegate(string item)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return item == &amp;quot;tom&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;Console.WriteLine(Enumerable.FirstOrDefault(result));&lt;/p&gt;
&lt;p&gt;//&lt;br /&gt;Console.WriteLine(&amp;quot;--- &amp;#39;OrderBy&amp;#39; --&amp;quot;);&lt;br /&gt;result = Enumerable.OrderBy&amp;lt;string, string&amp;gt;(list,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delegate(string item)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return item;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;foreach (string str in result)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(str);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;//&lt;br /&gt;Console.WriteLine(&amp;quot;--- &amp;#39;Min&amp;#39; --&amp;quot;);&lt;br /&gt;string result_str = Enumerable.Min&amp;lt;string, string&amp;gt;(list,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delegate(string item)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return item;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;Console.WriteLine(result_str);&lt;/p&gt;
&lt;p&gt;//&lt;br /&gt;Console.WriteLine(&amp;quot;--- &amp;#39;Distinct&amp;#39; --&amp;quot;);&lt;br /&gt;result = Enumerable.Distinct&amp;lt;string&amp;gt;(list);&lt;br /&gt;foreach (string str in result)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(str);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;//&lt;br /&gt;Console.WriteLine(&amp;quot;--- &amp;#39;All&amp;#39; --&amp;quot;);&lt;br /&gt;bool result_bool = Enumerable.All&amp;lt;string&amp;gt;(list, delegate(string item)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return item.CompareTo(&amp;quot;d&amp;quot;) &amp;gt; 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;Console.WriteLine(result_bool);&lt;/p&gt;
&lt;p&gt;//&lt;br /&gt;Console.WriteLine(&amp;quot;--- &amp;#39;Distinct&amp;#39; &amp;amp; &amp;#39;OrderBy&amp;#39; &amp;amp; &amp;#39;Where&amp;#39; --&amp;quot;);&lt;br /&gt;result = Enumerable.Distinct&amp;lt;string&amp;gt;(Enumerable.OrderBy&amp;lt;string, string&amp;gt;(Enumerable.Where&amp;lt;string&amp;gt;(list,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delegate(string item)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return item == &amp;quot;tom&amp;quot; || item == &amp;quot;david&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delegate(string item)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return item;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }));&lt;br /&gt;foreach (string str in result)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(str);&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;===========================================&lt;/p&gt;
&lt;p&gt;输出如下:&amp;nbsp;&lt;/p&gt;
&lt;p&gt;--- &amp;#39;FirstOrDefault&amp;#39; --&lt;br /&gt;tom&lt;br /&gt;--- &amp;#39;OrderBy&amp;#39; --&lt;br /&gt;cathy&lt;br /&gt;david&lt;br /&gt;mary&lt;br /&gt;tom&lt;br /&gt;tom&lt;br /&gt;--- &amp;#39;Min&amp;#39; --&lt;br /&gt;cathy&lt;br /&gt;--- &amp;#39;Distinct&amp;#39; --&lt;br /&gt;mary&lt;br /&gt;tom&lt;br /&gt;david&lt;br /&gt;cathy&lt;br /&gt;--- &amp;#39;All&amp;#39; --&lt;br /&gt;False&lt;br /&gt;--- &amp;#39;Distinct&amp;#39; &amp;amp; &amp;#39;OrderBy&amp;#39; &amp;amp; &amp;#39;Where&amp;#39; --&lt;br /&gt;david&lt;br /&gt;tom&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=8906" width="1" height="1"&gt;</content><author><name>wego</name><uri>http://sdt.sumida.com.cn:8080/cs/members/wego.aspx</uri></author><category term="C#" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/tags/C_2300_/default.aspx" /><category term=".NET" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/tags/.NET/default.aspx" /></entry><entry><title>Oracle 泛型使用</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2008/05/07/orace.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2008/05/07/orace.aspx</id><published>2008-05-07T03:48:00Z</published><updated>2008-05-07T03:48:00Z</updated><content type="html">&lt;p&gt;-------------------------------------------------------------------------------------------------------------&amp;nbsp;&lt;/p&gt;
&lt;p&gt;-- &amp;nbsp;procedure part&lt;/p&gt;
&lt;p&gt;FUNCTION IIF (p_bool IN BOOLEAN, p_result1 IN ANYDATA, p_result2 IN ANYDATA)&lt;br /&gt;&amp;nbsp;&amp;nbsp; RETURN ANYDATA&lt;br /&gt;IS&lt;br /&gt;&amp;nbsp;&amp;nbsp; atype&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ANYTYPE;&lt;br /&gt;&amp;nbsp;&amp;nbsp; data_type_argument&amp;nbsp;&amp;nbsp; EXCEPTION;&lt;br /&gt;BEGIN&lt;br /&gt;&amp;nbsp;&amp;nbsp; IF p_result1.gettype (atype) &amp;lt;&amp;gt; p_result2.gettype (atype)&lt;br /&gt;&amp;nbsp;&amp;nbsp; THEN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RAISE data_type_argument;&lt;br /&gt;&amp;nbsp;&amp;nbsp; END IF;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; CASE p_result1.gettype (atype)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHEN DBMS_TYPES.typecode_number&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; THEN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RETURN CASE&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHEN p_bool&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; THEN ANYDATA.convertnumber (p_result1.accessnumber)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ELSE ANYDATA.convertnumber (p_result2.accessnumber)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHEN DBMS_TYPES.typecode_varchar2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; THEN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RETURN CASE&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHEN p_bool&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; THEN ANYDATA.convertnvarchar2 (p_result1.accessvarchar2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ELSE ANYDATA.convertnvarchar2 (p_result2.accessvarchar2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHEN DBMS_TYPES.typecode_date&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; THEN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RETURN CASE&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHEN p_bool&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; THEN ANYDATA.convertdate (p_result1.accessdate)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ELSE ANYDATA.convertdate (p_result2.accessdate)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END;&lt;br /&gt;&amp;nbsp;&amp;nbsp; END CASE;&lt;br /&gt;EXCEPTION&lt;br /&gt;&amp;nbsp;&amp;nbsp; WHEN data_type_argument&lt;br /&gt;&amp;nbsp;&amp;nbsp; THEN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBMS_OUTPUT.put_line&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&amp;#39;The data type of the &amp;#39;&amp;#39;IIF&amp;#39;&amp;#39; function&amp;nbsp;both result parameter is different&amp;#39;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RETURN NULL;&lt;br /&gt;END;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;-------------------------------------------------------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;--&amp;nbsp;&amp;nbsp;caller part&amp;nbsp;&lt;/p&gt;
&lt;p&gt;v_str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2 (50)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; := iif (1 &amp;gt; 2,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ANYDATA.convertvarchar2 (&amp;#39;Yes&amp;#39;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ANYDATA.convertvarchar2 (&amp;#39;No&amp;#39;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ).accessnvarchar2;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;-- 类似于 C#&amp;nbsp;使用 string v_str = iif&amp;lt;string&amp;gt; (1&amp;gt; 2, &amp;#39;Yes&amp;#39;, &amp;#39;No&amp;#39;);&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;v_num&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; := iif (1 &amp;gt; 2, ANYDATA.convertnumber (1), ANYDATA.convertnumber (0)).accessnumber;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;-- 类似于 C#&amp;nbsp;使用&amp;nbsp;int v_num = iif&amp;lt;int&amp;gt; (1&amp;gt; 2, 1, 0);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;DBMS_OUTPUT.put_line (v_str);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-- output &amp;#39;No&amp;#39;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;DBMS_OUTPUT.put_line (v_num);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-- output &amp;#39;0&amp;#39;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=8827" width="1" height="1"&gt;</content><author><name>wego</name><uri>http://sdt.sumida.com.cn:8080/cs/members/wego.aspx</uri></author><category term="Oracle" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/tags/Oracle/default.aspx" /></entry><entry><title>数学对编程的重要</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2008/02/23/7806.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2008/02/23/7806.aspx</id><published>2008-02-23T03:14:00Z</published><updated>2008-02-23T03:14:00Z</updated><content type="html">&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;TEXT-ALIGN:left;mso-pagination:widow-orphan;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;" align="left"&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;且看如下&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;2&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;例&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;(1) &lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;算出&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;1&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;加到&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;100&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;的总和。&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;/span&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;低效&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;　&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;int sum = 0; &lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;　　&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;p&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;for (int i=1; i&amp;lt;=100; i++)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Times New Roman"&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum += i; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 高效&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;　&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt; &lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman"&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int sum = ((1 + 100) * (100 - 1 + 1)) / 2;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;或更精简的&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt; int sum = (101 * 100) &amp;gt;&amp;gt; 2;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;/span&gt;&amp;nbsp; 
&lt;p&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp; (2) &lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;计算&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;1&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;加到&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;10000&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;，奇数和偶数的总和。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;低效&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;　&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;font face="Times New Roman"&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;int oddSum = 0; &lt;/span&gt;&lt;/font&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;　　&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt; &lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;int evenSum = 0; &lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;　　&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face="Times New Roman"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;for (int i=1; i&amp;lt;=10000; i++) &lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;　　&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face="Times New Roman"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;{ &lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;　　&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face="Times New Roman"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;if (i % 2 == 0) &lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;　　&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face="Times New Roman"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;evenSum += i; &lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;　　&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;　　&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;oddSum += i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp; &lt;/font&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;/span&gt;
&lt;p&gt;&amp;nbsp; &lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;高效&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;　&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman"&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int sum = (10001 * 10000) &amp;gt;&amp;gt; 2; &lt;/span&gt;&lt;/font&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;　　&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;int evenSum = 5001 * 5000; &lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;　　&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman"&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int oddSum = sum - evenSum;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;font face="Times New Roman"&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/span&gt;&lt;/font&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;到&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;10000&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;之间的偶数总和是是&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;2+4+6+...+10000&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;，把它们全部除以&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;2&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;的话会变成&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;1+2+3+...+5000&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;，所以&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;1&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;到&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;10000&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;偶数的总和不就是&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;1&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;加到&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;5000&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;的两倍&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;font face="Times New Roman"&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;br /&gt;&amp;nbsp;---------------------------------------------&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;font face="Times New Roman"&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp; &lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;&lt;br /&gt;&lt;br /&gt;可见&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt;, &amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-font-kerning:0pt;"&gt;千万不要把曾经和你相伴十多年的数学课程知识给遗忘掉噢&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;COLOR:black;mso-font-kerning:0pt;"&gt;&lt;font face="Times New Roman"&gt; !!&lt;/font&gt;&lt;/span&gt; 
&lt;p&gt;　&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=7806" width="1" height="1"&gt;</content><author><name>wego</name><uri>http://sdt.sumida.com.cn:8080/cs/members/wego.aspx</uri></author></entry><entry><title>ASP.NET Download Web File</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2007/10/23/asp-net-download-web-file.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2007/10/23/asp-net-download-web-file.aspx</id><published>2007-10-23T04:10:00Z</published><updated>2007-10-23T04:10:00Z</updated><content type="html">&lt;p&gt;今天写了个 DownloadWebFile 函数,&amp;nbsp; 采用&amp;nbsp;&lt;u&gt;读取 --&amp;gt; 输出&lt;/u&gt; 方式.&amp;nbsp; 但发现当第二次打开 Download 的文件时, 文件报已损坏错误. code&amp;nbsp;如下:&lt;/p&gt;
&lt;p&gt;protected void DownloadFile(string url)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Net.HttpWebRequest Myrq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(url);&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Net.HttpWebResponse myrp = (System.Net.HttpWebResponse)Myrq.GetResponse();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Stream respStream = myrp.GetResponseStream();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.Expires = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.Clear();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.ContentType = myrp.ContentType;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;const int BUFFER_SIZE = 16*1024;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte[] buffer = new byte[BUFFER_SIZE];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int length;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;length = respStream.Read(buffer, 0, BUFFER_SIZE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(length &amp;gt; 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;Response.BinaryWrite(buffer);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; length = respStream.Read(buffer, 0, BUFFER_SIZE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.AddHeader(&amp;quot;content-disposition&amp;quot;, String.Format(&amp;quot;attachment;filename={0}&amp;quot;, &amp;quot;Competitor&amp;#39;s list.xls&amp;quot;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.AddHeader(&amp;quot;pragma&amp;quot;, &amp;quot;no-cache&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.AddHeader(&amp;quot;expires&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.AddHeader(&amp;quot;cache-control&amp;quot;, &amp;quot;must-revalidate, post-check=0, pre-check=0&amp;quot;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.Flush();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.End();&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;后在 Wicky 同志的帮助下,&amp;nbsp; 采用&amp;nbsp;&lt;u&gt;读取 --&amp;gt; 中传站存放 -&amp;gt;&amp;nbsp;输出&lt;/u&gt; 方式得已解决 !&lt;/p&gt;
&lt;p&gt;protected void DownloadFile(string url)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Net.HttpWebRequest Myrq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(url);&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Net.HttpWebResponse myrp = (System.Net.HttpWebResponse)Myrq.GetResponse();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Stream respStream = myrp.GetResponseStream();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.Expires = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.Clear();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.ContentType = myrp.ContentType;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;const int BUFFER_SIZE = 16*1024;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte[] buffer = new byte[BUFFER_SIZE];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int length;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;MemoryStream ms = new MemoryStream();&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;length = respStream.Read(buffer, 0, BUFFER_SIZE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(length &amp;gt; 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;ms.Write(buffer, 0, length);&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; length = respStream.Read(buffer, 0, BUFFER_SIZE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.AddHeader(&amp;quot;content-disposition&amp;quot;, String.Format(&amp;quot;attachment;filename={0}&amp;quot;, &amp;quot;Competitor&amp;#39;s list.xls&amp;quot;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.AddHeader(&amp;quot;pragma&amp;quot;, &amp;quot;no-cache&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.AddHeader(&amp;quot;expires&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.AddHeader(&amp;quot;cache-control&amp;quot;, &amp;quot;must-revalidate, post-check=0, pre-check=0&amp;quot;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;Response.BinaryWrite(ms.GetBuffer());&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.Flush();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.End();&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=6285" width="1" height="1"&gt;</content><author><name>wego</name><uri>http://sdt.sumida.com.cn:8080/cs/members/wego.aspx</uri></author></entry><entry><title> FireBird 求指定行数记录</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2007/10/08/firebird.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2007/10/08/firebird.aspx</id><published>2007-10-08T08:52:00Z</published><updated>2007-10-08T08:52:00Z</updated><content type="html">&lt;p&gt;数据库 FireBird&amp;nbsp;求指定行数记录的 sql 语法不是Oracle的rownum，也不是SQL Server的Top n.&amp;nbsp; 而是使用以下比较特别的形式.&lt;/p&gt;
&lt;p&gt;1)&amp;nbsp; select First&amp;nbsp;2 skip&amp;nbsp;3 * from table1 order by&amp;nbsp;field1 desc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- 取第4行到第5行&lt;br /&gt;&lt;br /&gt;2)&amp;nbsp; select * from table1 order by field1 desc ROWS&amp;nbsp;2 TO 4&amp;nbsp;&amp;nbsp; -- 取第2行到第4行&lt;/p&gt;
&lt;p&gt;3)&amp;nbsp;&amp;nbsp;select First&amp;nbsp;3 skip&amp;nbsp;0 * from table1 order by&amp;nbsp;field1 desc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;nbsp;同 SQL Server 的&amp;nbsp;Top 3&amp;nbsp;&lt;/p&gt;
&lt;p&gt;First n skip m形式会在忽略掉m行后，取前n行；&lt;/p&gt;
&lt;p&gt;而rows m to n形式，则是从第m行取到第n行。&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=6096" width="1" height="1"&gt;</content><author><name>wego</name><uri>http://sdt.sumida.com.cn:8080/cs/members/wego.aspx</uri></author></entry><entry><title>Oracle竖变横一句通</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2007/09/19/oracle-article.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2007/09/19/oracle-article.aspx</id><published>2007-09-19T06:32:00Z</published><updated>2007-09-19T06:32:00Z</updated><content type="html">&lt;p&gt;设有如下表 T&lt;/p&gt;
&lt;p&gt;A&amp;nbsp;&amp;nbsp; B&lt;br /&gt;-----------&lt;br /&gt;1&amp;nbsp;&amp;nbsp; 01&lt;br /&gt;1&amp;nbsp;&amp;nbsp; 02&lt;br /&gt;1&amp;nbsp;&amp;nbsp; 03&lt;br /&gt;2&amp;nbsp;&amp;nbsp; 04&lt;br /&gt;2&amp;nbsp;&amp;nbsp; 05&lt;br /&gt;3&amp;nbsp;&amp;nbsp; 06&lt;/p&gt;
&lt;p&gt;执行如下 sql&lt;/p&gt;
&lt;p&gt;select a,replace(max(sys_connect_by_path(b,&amp;#39;;&amp;#39;)),&amp;#39;;&amp;#39;,&amp;#39;&amp;#39;) b&lt;br /&gt;&amp;nbsp;from (select a,b,&lt;br /&gt;&amp;nbsp;(row_number() over(order by a,b)&lt;br /&gt;&amp;nbsp;+ dense_rank() over(order by a)) rn,&lt;br /&gt;&amp;nbsp;min(b) over(partition by a) mb&lt;br /&gt;&amp;nbsp;from&amp;nbsp;t&lt;br /&gt;&amp;nbsp;)&lt;br /&gt;&amp;nbsp;start with b = mb&lt;br /&gt;&amp;nbsp;connect by rn-1 = prior rn&lt;br /&gt;&amp;nbsp;group by a&lt;/p&gt;
&lt;p&gt;可得如下结果&lt;/p&gt;
&lt;p&gt;A&amp;nbsp;&amp;nbsp; B&lt;br /&gt;--------------------&lt;br /&gt;1&amp;nbsp;&amp;nbsp; 010203&lt;br /&gt;2&amp;nbsp;&amp;nbsp; 0405&lt;br /&gt;3&amp;nbsp;&amp;nbsp; 06&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=5845" width="1" height="1"&gt;</content><author><name>wego</name><uri>http://sdt.sumida.com.cn:8080/cs/members/wego.aspx</uri></author><category term="Oracle" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/tags/Oracle/default.aspx" /></entry><entry><title>ORACLE 的 GROUP BY ROLLUP 与 ratio_to_report 激情碰撞</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2007/09/12/oracle-group-by-rollup-ratio-to-report.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2007/09/12/oracle-group-by-rollup-ratio-to-report.aspx</id><published>2007-09-12T08:44:00Z</published><updated>2007-09-12T08:44:00Z</updated><content type="html">&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font size="3"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;假设有如下表&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;: SALE_AMOUNT&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span&gt;&lt;font face="Times New Roman" size="3"&gt;BU&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;AMOUNT&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span&gt;&lt;font face="Times New Roman" size="3"&gt;=============&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span&gt;&lt;font face="Times New Roman" size="3"&gt;CRD&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;100&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span&gt;&lt;font face="Times New Roman" size="3"&gt;SHK&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;200&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span&gt;&lt;font face="Times New Roman" size="3"&gt;RSJ&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;500&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;span&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font size="3"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;运行如下&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt; sql&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;SELECT&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;DECODE (GROUPING_ID (BU), 1, &amp;#39;Total&amp;#39;, BU) &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;as &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;BU,&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;SUM (AMOUNT) &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;as&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;AMOUNT,&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(ratio_to_report (&lt;b style="mso-bidi-font-weight:normal;"&gt;SUM (AMOUNT)&lt;/b&gt;) OVER ()) &lt;b style="mso-bidi-font-weight:normal;"&gt;* 2 &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;as&lt;b style="mso-bidi-font-weight:normal;"&gt; &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;AMOUNT_RATIO&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;FROM SALE_AMOUNT&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;GROUP BY ROLLUP (BU)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span&gt;&lt;font face="Times New Roman" size="3"&gt;ORDER BY BU&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;span&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;font size="3"&gt;可得如下结果&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span&gt;&lt;font face="Times New Roman" size="3"&gt;BU&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;AMOUNT&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;AMOUNT_RATIO&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span&gt;&lt;font face="Times New Roman" size="3"&gt;================================&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span&gt;&lt;font face="Times New Roman" size="3"&gt;CRD&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;100&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;0.0125&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span&gt;&lt;font face="Times New Roman" size="3"&gt;RSJ&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;500&lt;span style="mso-tab-count:4;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;0.625&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span&gt;&lt;font face="Times New Roman" size="3"&gt;SHK&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;200&lt;span style="mso-tab-count:4;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;0.25&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span&gt;&lt;font face="Times New Roman" size="3"&gt;Total&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;800&lt;span style="mso-tab-count:4;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;1&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;span&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;font size="3"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;当它们激情碰撞时&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;, &lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;有两点是需要注意的&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt 18pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;tab-stops:list 18.0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;1)&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;ratio_to_report (SUM (AMOUNT)) OVER () &lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;中的&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;SUM () &lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;须写于内层而不能写于外层&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;. &lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;如&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;SUM (ratio_to_report (AMOUNT) OVER ())&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt 18pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;tab-stops:list 18.0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;span&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt 18pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;tab-stops:list 18.0pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;2)&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;ratio_to_report &lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;后须乘以&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt; 2, &lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;因为&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;ratio_to_report (SUM (AMOUNT)) OVER () &lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;已除多一个&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt; total &lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;了&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;. &lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:&amp;#39;Times New Roman&amp;#39;;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;即&lt;/span&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;AMOUNT / (2 &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;* &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;TOTAL_ AMOUNT )&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=5711" width="1" height="1"&gt;</content><author><name>wego</name><uri>http://sdt.sumida.com.cn:8080/cs/members/wego.aspx</uri></author></entry><entry><title>Hashtable  元素顺序问题</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2007/04/17/hashtable.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/wego/archive/2007/04/17/hashtable.aspx</id><published>2007-04-17T09:55:00Z</published><updated>2007-04-17T09:55:00Z</updated><content type="html">&lt;SPAN style="FONT-SIZE:9pt;COLOR:blue;mso-hansi-font-family:'Times New Roman';mso-font-kerning:0pt;mso-no-proof:yes;"&gt;
&lt;DIV style="BORDER-RIGHT:medium none;PADDING-RIGHT:0cm;BORDER-TOP:medium none;PADDING-LEFT:0cm;PADDING-BOTTOM:1pt;BORDER-LEFT:medium none;PADDING-TOP:0cm;BORDER-BOTTOM:windowtext 1.5pt solid;mso-element:para-border-div;"&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT:medium none;PADDING-RIGHT:0cm;BORDER-TOP:medium none;PADDING-LEFT:0cm;PADDING-BOTTOM:0cm;MARGIN:0cm 0cm 0pt;BORDER-LEFT:medium none;PADDING-TOP:0cm;BORDER-BOTTOM:medium none;mso-border-bottom-alt:solid windowtext 1.5pt;mso-padding-alt:0cm 0cm 1.0pt 0cm;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:black;mso-hansi-font-family:'Times New Roman';mso-font-kerning:0pt;mso-no-proof:yes;"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT:medium none;PADDING-RIGHT:0cm;BORDER-TOP:medium none;PADDING-LEFT:0cm;PADDING-BOTTOM:0cm;MARGIN:0cm 0cm 0pt;BORDER-LEFT:medium none;PADDING-TOP:0cm;BORDER-BOTTOM:medium none;mso-border-bottom-alt:solid windowtext 1.5pt;mso-padding-alt:0cm 0cm 1.0pt 0cm;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:black;mso-hansi-font-family:'Times New Roman';mso-font-kerning:0pt;mso-no-proof:yes;"&gt;今天用 &lt;SPAN&gt;Hashtable &lt;/SPAN&gt;时发现结果的顺序并非为元素&lt;SPAN&gt; Add &lt;/SPAN&gt;的顺序&lt;SPAN&gt;. &lt;/SPAN&gt;后改用&lt;SPAN&gt;ListDictionary &lt;/SPAN&gt;得以解决&lt;SPAN&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT:medium none;PADDING-RIGHT:0cm;BORDER-TOP:medium none;PADDING-LEFT:0cm;PADDING-BOTTOM:0cm;MARGIN:0cm 0cm 0pt;BORDER-LEFT:medium none;PADDING-TOP:0cm;BORDER-BOTTOM:medium none;mso-border-bottom-alt:solid windowtext 1.5pt;mso-padding-alt:0cm 0cm 1.0pt 0cm;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:black;mso-hansi-font-family:'Times New Roman';mso-font-kerning:0pt;mso-no-proof:yes;"&gt;请见如下&lt;SPAN&gt; code&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BORDER-RIGHT:medium none;PADDING-RIGHT:0cm;BORDER-TOP:medium none;PADDING-LEFT:0cm;PADDING-BOTTOM:0cm;MARGIN:0cm 0cm 0pt;BORDER-LEFT:medium none;PADDING-TOP:0cm;BORDER-BOTTOM:medium none;mso-border-bottom-alt:solid windowtext 1.5pt;mso-padding-alt:0cm 0cm 1.0pt 0cm;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:blue;mso-hansi-font-family:'Times New Roman';mso-font-kerning:0pt;mso-no-proof:yes;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:blue;mso-hansi-font-family:'Times New Roman';mso-font-kerning:0pt;mso-no-proof:yes;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:blue;mso-hansi-font-family:'Times New Roman';mso-font-kerning:0pt;mso-no-proof:yes;"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;mso-hansi-font-family:'Times New Roman';mso-font-kerning:0pt;mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt; System.Collections;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt 0.1pt;TEXT-INDENT:-36pt;TEXT-ALIGN:left;mso-para-margin-left:-3.42gd;mso-char-indent-count:-4.0;mso-layout-grid-align:none;" align=left&gt;&lt;SPAN style="FONT-SIZE:9pt;mso-hansi-font-family:'Times New Roman';mso-font-kerning:0pt;mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;static&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:teal;"&gt;Hashtable&lt;/SPAN&gt;&lt;FONT color=#000000&gt; _period;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt 0.1pt;TEXT-INDENT:-36pt;TEXT-ALIGN:left;mso-para-margin-left:-3.42gd;mso-char-indent-count:-4.0;mso-layout-grid-align:none;" align=left&gt;&lt;SPAN style="FONT-SIZE:9pt;mso-hansi-font-family:'Times New Roman';mso-font-kerning:0pt;mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt 0.1pt;TEXT-INDENT:-36pt;TEXT-ALIGN:left;mso-para-margin-left:-3.42gd;mso-char-indent-count:-4.0;mso-layout-grid-align:none;" align=left&gt;&lt;SPAN style="FONT-SIZE:9pt;mso-hansi-font-family:'Times New Roman';mso-font-kerning:0pt;mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;static&lt;/SPAN&gt;&lt;FONT color=#000000&gt; frmMain()&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt 0.1pt;TEXT-INDENT:-36pt;TEXT-ALIGN:left;mso-para-margin-left:-3.42gd;mso-char-indent-count:-4.0;mso-layout-grid-align:none;" align=left&gt;&lt;SPAN style="FONT-SIZE:9pt;mso-hansi-font-family:'Times New Roman';mso-font-kerning:0pt;mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt 0.1pt;TEXT-INDENT:-36pt;TEXT-ALIGN:left;mso-para-margin-left:-3.42gd;mso-char-indent-count:-4.0;mso-layout-grid-align:none;" align=left&gt;&lt;SPAN style="FONT-SIZE:9pt;mso-hansi-font-family:'Times New Roman';mso-font-kerning:0pt;mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_period = &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:teal;"&gt;Hashtable&lt;/SPAN&gt;&lt;FONT color=#000000&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt 0.1pt;TEXT-INDENT:-36pt;TEXT-ALIGN:left;mso-para-margin-left:-3.42gd;mso-char-indent-count:-4.0;mso-layout-grid-align:none;" align=left&gt;&lt;SPAN style="FONT-SIZE:9pt;mso-hansi-font-family:'Times New Roman';mso-font-kerning:0pt;mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_period.Add(&lt;/FONT&gt;&lt;SPAN style="COLOR:maroon;"&gt;"Month"&lt;/SPAN&gt;&lt;FONT color=#000000&gt;, 12);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt 0.1pt;TEXT-INDENT:-36pt;TEXT-ALIGN:left;mso-para-margin-left:-3.42gd;mso-char-indent-count:-4.0;mso-layout-grid-align:none;" align=left&gt;&lt;SPAN style="FONT-SIZE:9pt;mso-hansi-font-family:'Times New Roman';mso-font-kerning:0pt;mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_period.Add(&lt;/FONT&gt;&lt;SPAN style="COLOR:maroon;"&gt;"Quarter"&lt;/SPAN&gt;&lt;FONT color=#000000&gt;, 4);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt 0.1pt;TEXT-INDENT:-36pt;TEXT-ALIGN:left;mso-para-margin-left:-3.42gd;mso-char-indent-count:-4.0;mso-layout-grid-align:none;" align=left&gt;&lt;SPAN style="FONT-SIZE:9pt;mso-hansi-font-family:'Times New Roman';mso-font-kerning:0pt;mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_period.Add(&lt;/FONT&gt;&lt;SPAN style="COLOR:maroon;"&gt;"Half Year"&lt;/SPAN&gt;&lt;FONT color=#000000&gt;, 2);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt 0.1pt;TEXT-INDENT:-36pt;TEXT-ALIGN:left;mso-para-margin-left:-3.42gd;mso-char-indent-count:-4.0;mso-layout-grid-align:none;" align=left&gt;&lt;SPAN style="FONT-SIZE:9pt;mso-hansi-font-family:'Times New Roman';mso-font-kerning:0pt;mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;_period.Add(&lt;/FONT&gt;&lt;SPAN style="COLOR:maroon;"&gt;"Full Year"&lt;/SPAN&gt;&lt;FONT color=#000000&gt;, 1);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt 0.1pt;TEXT-INDENT:-36pt;TEXT-ALIGN:left;mso-para-margin-left:-3.42gd;mso-char-indent-count:-4.0;mso-layout-grid-align:none;" align=left&gt;&lt;SPAN style="FONT-SIZE:9pt;mso-hansi-font-family:'Times New Roman';mso-font-kerning:0pt;mso-no-proof:yes;"&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt 0.1pt;TEXT-INDENT:-36pt;TEXT-ALIGN:left;mso-para-margin-left:-3.42gd;mso-char-indent-count:-4.0;mso-layout-grid-align:none;" align=left&gt;&lt;SPAN style="FONT-SIZE:9pt;mso-hansi-font-family:'Times New Roman';mso-font-kerning:0pt;mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;ICollection&lt;/SPAN&gt;&lt;FONT color=#000000&gt; period_type = _period.Keys;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt 0.1pt;TEXT-INDENT:-36pt;TEXT-ALIGN:left;mso-para-margin-left:-3.42gd;mso-char-indent-count:-4.0;mso-layout-grid-align:none;" align=left&gt;&lt;SPAN style="FONT-SIZE:9pt;mso-hansi-font-family:'Times New Roman';mso-font-kerning:0pt;mso-no-proof:yes;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;foreach&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (&lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt; s &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;in&lt;/SPAN&gt;&lt;FONT color=#000000&gt; period_type)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt 0.1pt;TEXT-INDENT:-36pt;TEXT-ALIGN:left;mso-para-margin-left:-3.42gd;mso-char-indent-count:-4.0;mso-layout-grid-align:none;" align=left&gt;&lt;SPAN style="FONT-SIZE:9pt;mso-hansi-font-family:'Times New Roman';mso-font-kerning:0pt;mso-no-proof:yes;"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt 0