﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-chenhg</title><link>http://www.blogjava.net/chenhg/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 18:59:41 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 18:59:41 GMT</pubDate><ttl>60</ttl><item><title>Java程序员情书</title><link>http://www.blogjava.net/chenhg/archive/2012/11/21/391701.html</link><dc:creator>MR.CHEN</dc:creator><author>MR.CHEN</author><pubDate>Wed, 21 Nov 2012 07:41:00 GMT</pubDate><guid>http://www.blogjava.net/chenhg/archive/2012/11/21/391701.html</guid><wfw:comment>http://www.blogjava.net/chenhg/comments/391701.html</wfw:comment><comments>http://www.blogjava.net/chenhg/archive/2012/11/21/391701.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/chenhg/comments/commentRss/391701.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenhg/services/trackbacks/391701.html</trackback:ping><description><![CDATA[我能抽象出整个世界．．<img height="20" src="http://www.blogjava.net/Emoticons/QQ/14.gif" width="20" border="0"  alt="" />．&nbsp; &nbsp;但是我却不能抽象出你．．．&nbsp; &nbsp;你肯定是一个单例，因为你是那样的独一无二...&nbsp; &nbsp;所以我的世界并不完整．．．&nbsp; &nbsp;我可以重载甚至覆盖这个世界里的任何一种方法．．．&nbsp; &nbsp;但是却不能覆盖对你的思念．．． 也许命中注定了 你与我存在于不同的包里... 在你的世界里，你被烙上了私有的属性... 我用尽全身力气，也找不到访问你的接口... 我不愿就此甘心，找到了藏身在javaeye神殿的巫师，教会了我穿越时空的方法... 终于，我用反射这把利剑，打开了你空间的缺口... 并发现了接近你的秘密... 当我迫不及待地调用了爱你这个方法．．．&nbsp; &nbsp;并义无返顾的把自己作为参数传进这个方法时．．．&nbsp; &nbsp;我才发现爱上你是一个没有终止条件的递归．．．&nbsp; &nbsp;它不停的返回我对你的思念并压入我心里的堆栈．．．&nbsp; &nbsp;在这无尽的黑夜中 ，<a style="color: #000000" href="http://www.tbwshc.com">tb</a>终于体验到你对我爱的回调... 我的内存里已经再也装不下别人... 当我以为将与你在这个死循环中天荒地老时... 万恶的系统抛出了爱的异常... 此刻我才发现，我不过是操纵于虚拟机下的一个线程，你也是... 但我毫不后悔，因为在爱的洗礼之后... 我看见了一个新的生命，那是我们的, 继承&nbsp;&nbsp;<br /><img src ="http://www.blogjava.net/chenhg/aggbug/391701.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenhg/" target="_blank">MR.CHEN</a> 2012-11-21 15:41 <a href="http://www.blogjava.net/chenhg/archive/2012/11/21/391701.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 线程基础 学习  </title><link>http://www.blogjava.net/chenhg/archive/2012/11/05/390802.html</link><dc:creator>MR.CHEN</dc:creator><author>MR.CHEN</author><pubDate>Mon, 05 Nov 2012 05:20:00 GMT</pubDate><guid>http://www.blogjava.net/chenhg/archive/2012/11/05/390802.html</guid><wfw:comment>http://www.blogjava.net/chenhg/comments/390802.html</wfw:comment><comments>http://www.blogjava.net/chenhg/archive/2012/11/05/390802.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenhg/comments/commentRss/390802.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenhg/services/trackbacks/390802.html</trackback:ping><description><![CDATA[线程是Java语言的一个部分，而且是Java的最强大的功能之一。究竟什么是线程，为什么要开发基于线程的应用程序？在本文中，我们将深入了解一下线程的用法，以及使用线程的一些技术。在我们开始讲述线程之前，最好先了解一下有关背景知识和分析一下线程的工作原理。 
<p>　　当程序员一开始开发应用程序时，这些应用程序只能在一个时间内完成一件事情。应用程序从主程序开始执行，直到运行结束，像 Fortran/Cobol/Basic这些语言均是如此。</p>
<p>　　随着时间的推移，计算机发展到可以在同一时间段内运行不止一个应用程序的时代了，但是应用程序运行时仍然是串行的，即从开始运行到结束，下一条指令接着上一条指令执行。到最近，程序发展到可以在执行时，以若干个线程的形式运行。Java就具有运行多线程的能力，可以在同一时间段内进行几个操作，这就意味着给定的操作不必等到另外一个操作结束之后，才能开始。而且对某个操作可以指定更高一级的优先级。</p>
<p>　　不少程序语言，包括ADA， Modula-2和C/C++，已经可以提供对线程的支持。同这些语言相比，Java的特点是从最底层开始就对线程提供支持。除此以外，标准的Java类是可重入的，允许在一个给定的应用程序中由多个线程调用同一方法，<a style="color: #000000" href="http://www.tbwshc.com">tb</a>而线程彼此之间又互不干扰。Java的这些特点为多线程应用程序的设计奠定了基础。</p>
<p>　　什么是线程?</p>
<p>　　究竟什么是线程呢？正如在图A中所示，一个线程是给定的指令的序列 (你所编写的代码)，一个栈(在给定的方法中定义的变量)，以及一些共享数据(类一级的变量)。线程也可以从全局类中访问静态数据。</p>

#g_kclist{font-size:12px;width:570px;float:none; margin-top:5px; clear:right}
#g_kclist a{color:#000; text-decoration:none}
#g_kclist h2{margin:0px;padding:0px;font-size:14px; text-align:center;background:url(http://www.thea.cn/zt/zt_img/zczhongduan.gif) no-repeat;line-height:31px;color:#fff}
#g_kclist table{line-height:25px;background:#B0DA90;margin-top:8px}
#g_kclist table td{ text-align:center;background:#fff}
#g_kclist table td.td1 a{color:#f00}
#g_kclist table th{background:#F2F7ED;color:#525F46}
<img src ="http://www.blogjava.net/chenhg/aggbug/390802.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenhg/" target="_blank">MR.CHEN</a> 2012-11-05 13:20 <a href="http://www.blogjava.net/chenhg/archive/2012/11/05/390802.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PB数据窗口怎么根据内容显示</title><link>http://www.blogjava.net/chenhg/archive/2012/10/23/390113.html</link><dc:creator>MR.CHEN</dc:creator><author>MR.CHEN</author><pubDate>Tue, 23 Oct 2012 07:37:00 GMT</pubDate><guid>http://www.blogjava.net/chenhg/archive/2012/10/23/390113.html</guid><wfw:comment>http://www.blogjava.net/chenhg/comments/390113.html</wfw:comment><comments>http://www.blogjava.net/chenhg/archive/2012/10/23/390113.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenhg/comments/commentRss/390113.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenhg/services/trackbacks/390113.html</trackback:ping><description><![CDATA[有多种方法的，我只说两种最简单的。<br /><br />一、定义数据源sql时，定义一个变量：xb，然后数据源写成：<br /><br />&nbsp; select * from [运动员表] where [性别]=:xb<br /><br />&nbsp; 再从窗口的open事件中写：<br /><br />&nbsp; dw_1.settransobject(sqlca)<br />&nbsp; dw_1.retrieve('男')//把变量传给数据窗口，只刷出男生。<br /><br />&nbsp; 即可实现。<br /><br /><br />二、定义数据源sql时，直接写成：<br /><br />&nbsp; select * from [运动员表]<br /><br />&nbsp; 窗口的open事件中写：<br /><br />&nbsp; dw_1.settransobejct(sqlca)<br />&nbsp; dw_1.retrieve()//这句是刷新出所有的运动员，包括男女<br />&nbsp; dw_1.setfilter("[性别]='男'")//为数据窗口设置过滤<br />&nbsp; dw_1.filter()//使用过滤字符串过滤数据<br /><br />&nbsp; 也可以实现你所要求的。<br /><br />是不是数据窗口的行高不够（这个会挡住每行数据的一点点），<br />还有可能是details的band<a style="color: #000000" href="http://www.tbwshc.com">tb</a>向下拖拖 多放点空间 （这个肯能挡住最下面的数据）<br /><img src ="http://www.blogjava.net/chenhg/aggbug/390113.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenhg/" target="_blank">MR.CHEN</a> 2012-10-23 15:37 <a href="http://www.blogjava.net/chenhg/archive/2012/10/23/390113.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle字符集乱码问题析及解决办法</title><link>http://www.blogjava.net/chenhg/archive/2012/10/17/389759.html</link><dc:creator>MR.CHEN</dc:creator><author>MR.CHEN</author><pubDate>Wed, 17 Oct 2012 09:06:00 GMT</pubDate><guid>http://www.blogjava.net/chenhg/archive/2012/10/17/389759.html</guid><wfw:comment>http://www.blogjava.net/chenhg/comments/389759.html</wfw:comment><comments>http://www.blogjava.net/chenhg/archive/2012/10/17/389759.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenhg/comments/commentRss/389759.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenhg/services/trackbacks/389759.html</trackback:ping><description><![CDATA[找到了问题产生的原因后，下面来讨论如何解决该问题。对于Oracle Enterprise Manager中的所有工具，有一个配置文件名为dbappscfg.properties，修改该文件即可解决上述问题。这个文件的位置在$ORACLE_HOME\sysman\config目录下，用任何的文本编辑器打开该文件，在这个文件里面，找到这样一项， 
<p>　　# SQLPLUS_NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1</p>
<p>　　去掉注释符#，同时将其修改为</p>
<p>　　SQLPLUS_NLS_LANG=AMERICAN_AMERICA.ZHS16GBK</p>
<p>　　对于Windows操作系统，还需要修改一项，在文件中找到# SQLPLUS_SYSTEMROOT=c:\\WINNT40，去掉注释符，将其修改为你所在机器的操作系统主目录。如操作系统的主目录在D盘的Winnt下，则将其修改为</p>
<p>　　SQLPLUS_SYSTEMROOT=d:\\WINNT。</p>
<p>　　对于后面一项的修改只对Windows操作系统进行，对UNIX操作系统则不需要。如果在Windows操作系统中不修改该项，在Oracle Enterprise Manager中，连接系统时，会提示如下的错误：</p>
<p>　　ORA-12560 TNS:protocol adapter error</p>
<p>　　或者</p>
<p>　　ORA-12545 Connect failed because target host or objec<a style="color: #000000" href="http://www.tbwshc.com">tb</a>&nbsp;does not exist</p>
<p>　　修改完成后，保存文件，退出编辑。重新连接SQL PLUS Worksheet，字符集乱码问题得到解决,显示正确的简体中文字符集。</p>

.item-area{width:578px;margin:15px auto;border-top:1px solid #ddd;color:#666}
.item-area a,.item-area a:link,.item-area a:visited{color:#666;text-decoration:none}
.item-area a:hover{color:#3a7ad9;text-decoration:underline;}
a img{border:none;vertical-align:middle}
.item-area h2,.item-area h3{float:none;font-size:100%;font-weight:normal;}
.item-area .h2{height:25px;margin:10px 0;padding-left:35px;*float:left;font:bold 14px/25px "宋体";background:url(http://sns.thea.cn/module/images/icos.png) no-repeat 0 0}
.item-area span.more{float:right;font:normal 12px/25px "宋体"}
.item-area a.more{float:right;font:normal 12px/25px "宋体"}

.item-a{margin-bottom:15px}
.item-a .h-ksrm{background-position:0 0}
.item-a li{*display:inline;overflow:hidden;zoom:1;line-height:2em;padding-left:35px;font-size:14px;background: url(http://sns.thea.cn/module/images/btns.png) no-repeat -1px -28px;}
.item-a li a{float:left;}
.item-a .testBtn{float:right;width:58px;height:21px;line-height:21px;font-size:12px;margin-top:5px;margin-top:3px;text-align:center;background:url(http://sns.thea.cn/module/images/btns.png) no-repeat -1px -1px; color:#FFFFFF;}
.item-a a.freeBtn{width:20px;margin:0 0 0 6px;line-height:28px;color:#fff;font-size:12px;text-indent:-9999px;background: url(http://sns.thea.cn/module/images/icos.png) no-repeat 0 -131px;}
.item-a li.hots a.freeBtn{background-position:0 -105px}
.item-a a.examnum em{font-style:normal;color:red;font-weight:bold;}

.item-b {padding:5px 0 20px;border-top:1px dashed #ddd;border-bottom:1px dashed #ddd}
.xsjl-list-col3s li{display:table-cell;*display:inline;zoom:1;vertical-align:top;width:182px;padding-right:10px;line-height:150%;font-size:12px;}
.item-b .h-xsjl{background-position:0 -26px}
.item-b .pic{float:left;margin:3px 10px 0 0;}
.item-b em{font-style:normal;color:#dc2c2c}
.item-b a.join{display:inline-block;padding-left:20px;background:url(http://sns.thea.cn/module/images/icos.png) no-repeat 0 -160px}
.item-b .xsjl-list-col3s h3 a{display:inline-block;width:120px;overflow:hidden;white-space:nowrap;color:#3a7ad9}
.item-b .xsjl-list-col3s h3{text-align:left;line-height:150%;font-family:"宋体","微软雅黑"}
<img src ="http://www.blogjava.net/chenhg/aggbug/389759.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenhg/" target="_blank">MR.CHEN</a> 2012-10-17 17:06 <a href="http://www.blogjava.net/chenhg/archive/2012/10/17/389759.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle中DBMS_RANDOM包的用法</title><link>http://www.blogjava.net/chenhg/archive/2012/09/21/388247.html</link><dc:creator>MR.CHEN</dc:creator><author>MR.CHEN</author><pubDate>Fri, 21 Sep 2012 05:09:00 GMT</pubDate><guid>http://www.blogjava.net/chenhg/archive/2012/09/21/388247.html</guid><wfw:comment>http://www.blogjava.net/chenhg/comments/388247.html</wfw:comment><comments>http://www.blogjava.net/chenhg/archive/2012/09/21/388247.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenhg/comments/commentRss/388247.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenhg/services/trackbacks/388247.html</trackback:ping><description><![CDATA[我的myoracle.txt脚本内容如下： 
<div>
<div>drop procedure PRO_RECEIPTSTOCK_5D19A;</div>
<div><br /></div>
<div>create or replace procedure PRO_RECEIPTSTOCK_5D19A IS</div>
<div>v_STOCKID NUMBER(13);</div>
<div>v_STARTNO VARCHAR2(10);</div>
<div>v_ENDNO VARCHAR2(10);</div>
<div>v_RECEIPTTYPE NUMBER(13);</div>
<div>v_STATUS CHAR(1);</div>
<div>v_COUNT NUMBER(13);</div>
<div>v_UNITID NUMBER(13);</div>
<div>V_RELATEUSERNAME VARCHAR2(150);</div>
<div>V_GLIDENUM NUMBER(20);</div>
<div>V_FLAG VARCHAR2(2);</div>
<div>V_PROCTM DATE;</div>
<div>V_SPROCTM VARCHAR2(30);</div>
<div>V_REGISTERTM DATE;</div>
<div>V_SREGISTERTM VARCHAR2(30);</div>
<div>V_DBUSER VARCHAR2(20);</div>
<div><br /></div>
<div>V_CURSQL VARCHAR2(4000);</div>
<div>V_MYCOUNT NUMBER;</div>
<div><br /></div>
<div>CURSOR C_RECEIPTSTOCK_TMP IS</div>
<div>SELECT</div>
<div>STOCKID,</div>
<div>STARTNO,</div>
<div>ENDNO,</div>
<div>RECEIPTTYPE,</div>
<div>STATUS,</div>
<div>COUNT,</div>
<div>UNITID,</div>
<div>RELATEUSERNAME,</div>
<div>GLIDENUM,</div>
<div>FLAG,</div>
<div>PROCTM,</div>
<div>REGISTERTM,</div>
<div>DBUSER</div>
<div>FROM GFMIS_ALL.RECEIPTSTOCK_5D19A_TMP</div>
<div>WHERE</div>
<div>ZTOF_STATUS = '1'</div>
<div>AND DBUSER IS NOT NULL;</div>
<div>begin</div>
<div>&nbsp;<wbr> --把票据类型为5D的缴款书在库存中更新成一般缴款书</div>
<div>&nbsp;<wbr> UPDATE GFMIS_ALL.RECEIPTSTOCK T SET T.RECEIPTTYPE=4765 WHERE EXISTS (SELECT 1 FROM GFMIS_ALL.RECEIPTSTOCK_5D19A_TMP TT WHERE TT.STOCKID = substr(T.STOCKID, 4, length(TRIM(T.STOCKID))) AND TT.ZTOF_STATUS = '1' AND TT.RECEIPTTYPE=11533);</div>
<div><br /></div>
<div>&nbsp;<wbr> OPEN C_RECEIPTSTOCK_TMP;</div>
<div>&nbsp;<wbr> LOOP</div>
<div>&nbsp;<wbr> &nbsp;<wbr> FETCH C_RECEIPTSTOCK_TMP INTO v_STOCKID,</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>v_STARTNO,</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>v_ENDNO,</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>v_RECEIPTTYPE,</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>v_STATUS,</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>v_COUNT,</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>v_UNITID,</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>V_RELATEUSERNAME,</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>V_GLIDENUM,</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>V_FLAG,</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>V_PROCTM,</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>V_REGISTERTM,</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>V_DBUSER;</div>
<div><br /></div>
<div>&nbsp;<wbr> &nbsp;<wbr> EXIT WHEN C_RECEIPTSTOCK_TMP%NOTFOUND;</div>
<div><br /></div>
<div>&nbsp;<wbr> &nbsp;<wbr> V_CURSQL := 'SELECT COUNT(1) FROM ' || V_DBUSER || '.RECEIPTSTOCK WHERE STOCKID = ' || v_STOCKID;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> EXECUTE IMMEDIATE V_CURSQL INTO V_MYCOUNT;</div>
<div><br /></div>
<div>&nbsp;<wbr> &nbsp;<wbr> IF (V_MYCOUNT = 0) THEN</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr></div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> V_SPROCTM :=TO_CHAR(V_PROCTM,'YYYY-MM-DD HH24:MI:SS');</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> V_SREGISTERTM :=TO_CHAR(V_REGISTERTM,'YYYY-MM-DD HH24:MI:SS');</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> IF (v_RECEIPTTYPE = 11533) THEN</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>v_RECEIPTTYPE := 4765;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> END IF;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr></div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> V_CURSQL :='INSERT INTO ' || V_DBUSER || '.RECEIPTSTOCK (STOCKID,STARTNO,ENDNO,RECEIPTTYPE,STATUS,COUNT,UNITID,RELATEUSERNAME,GLIDENUM,FLAG,PROCTM,REGISTERTM) VALUES (' || v_STOCKID || ',''' || v_STARTNO || ''',''' || v_ENDNO || ''',' || v_RECEIPTTYPE || ',''' || v_STATUS || ''',' || v_COUNT || ',' || 1 || ',''' || V_RELATEUSERNAME || ''',' || NVL(V_GLIDENUM, 0) || ',''' || V_FLAG || ''', TO_DATE(''' || V_SPROCTM || ''',''YYYY-MM-DD HH24:MI:SS''), TO_DATE(''' || V_SREGISTERTM || ''',''YYYY-MM-DD HH24:MI:SS''))';</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> EXECUTE IMMEDIATE V_CURSQL;</div>
<div><br /></div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> UPDATE GFMIS_ALL.RECEIPTSTOCK_5D19A_TMP T SET T.ZTOF_STATUS = '0' WHERE T.STOCKID = v_STOCKID AND T.ZTOF_STATUS = '1';</div>
<div><br /></div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> DELETE FROM GFMIS.RECEIPTSTOCK WHERE STOCKID = v_STOCKID;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr></div>
<div>&nbsp;<wbr> &nbsp;<wbr> END IF;</div>
<div><br /></div>
<div>&nbsp;<wbr> END LOOP;</div>
<div><br /></div>
<div>&nbsp;<wbr> UPDATE GFMIS_ALL.RECEIPTSTOCK_5D19A_TMP T SET T.ZTOF_STATUS = '0' WHERE T.ZTOF_STATUS = '1' AND T.RECEIPTTYPE=11533;</div>
<div><br /></div>
<div>&nbsp;<wbr> COMMIT;</div>
<div><br /></div>
<div>&nbsp;<wbr> EXCEPTION</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>WHEN NO_DATA_FOUND THEN</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>NULL;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>WHEN OTHERS THEN</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>CLOSE C_RECEIPTSTOCK_TMP;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>dbms_output.put_line(SQLERRM);</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>IF C_RECEIPTSTOCK_TMP%ISOPEN THEN</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> CLOSE C_RECEIPTSTOCK_TMP;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>END IF;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>RAISE;</div>
<div>end PRO_RECEIPTSTOCK_5D19A;</div>
<div><font color="#fd08fe">/</font></div>
<div><br /></div>
<div>DROP TRIGGER TRI_RECEIPTSTOCK_CHG_AFT;</div>
<div><br /></div>
<div>CREATE OR REPLACE TRIGGER TRI_RECEIPTSTOCK_CHG_AFT</div>
<div>AFTER DELETE OR INSERT OR UPDATE</div>
<div>ON RECEIPTSTOCK</div>
<div>REFERENCING NEW AS NEW OLD AS OLD</div>
<div>FOR EACH ROW</div>
<div>DECLARE</div>
<div>curTable varchar2(50);</div>
<div>curType char(1);</div>
<div>curTime TimeStamp;</div>
<div>id number(13);</div>
<div>curID number(13);</div>
<div>curSQL varchar2(4000);</div>
<div>curUser varchar2(30);</div>
<div>v_distno varchar2(30);</div>
<div>v_dbuser varchar2(30);</div>
<div>v_mycount number(13);</div>
<div>BEGIN</div>
<div>&nbsp;<wbr> &nbsp;<wbr>IF (INSERTING) THEN&nbsp;<wbr></div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> --把票据类型为5D<a style="color: #000000" href="HTTP://WWW.TBWSHC.COM">TB</a>的缴款书在库存中更新成一般缴款书 或者 把指定的19个单位的库存移到分库里面</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> SELECT COUNT(1) INTO v_mycount FROM GFMIS_ALL.RECEIPTSTOCK_DISTRICT T WHERE T.UNITID = :NEW.UNITID;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> IF (v_mycount &gt; 0) THEN&nbsp;<wbr></div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>SELECT T.DBUSER INTO v_dbuser FROM GFMIS_ALL.RECEIPTSTOCK_DISTRICT T WHERE T.UNITID = :NEW.UNITID;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr></div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>curSQL := 'SELECT COUNT(1) FROM ' || v_dbuser || '.RECEIPTSTOCK WHERE UNITID = ' || substr(:NEW.UNITID, 4, length(TRIM(:NEW.UNITID))) || ' AND RECEIPTTYPE = ' || :NEW.RECEIPTTYPE || ' AND STARTNO &lt;= ''' || :NEW.STARTNO || ''' AND ENDNO &gt;= ''' || :NEW.ENDNO || '';</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>EXECUTE IMMEDIATE curSQL INTO v_mycount;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>if (v_mycount = 0) then</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> INSERT INTO GFMIS_ALL.RECEIPTSTOCK_5D19A_TMP (STOCKID,STARTNO,ENDNO,RECEIPTTYPE,STATUS,COUNT,UNITID,RELATEUSERNAME,GLIDENUM,FLAG,PROCTM,REGISTERTM,DBUSER,ZTOF_STATUS) VALUES (substr(:NEW.STOCKID, 4, length(TRIM(:NEW.STOCKID))),:NEW.STARTNO,:NEW.ENDNO,:NEW.RECEIPTTYPE,:NEW.STATUS,:NEW.COUNT,substr(:NEW.UNITID, 4, length(TRIM(:NEW.UNITID))),:NEW.RELATEUSERNAME,:NEW.GLIDENUM,:NEW.FLAG,:NEW.PROCTM,:NEW.REGISTERTM,v_dbuser,'1'); &nbsp;<wbr></div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>end if;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr></div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr></div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> END IF;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr></div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> IF (:NEW.RECEIPTTYPE = 11533) THEN</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> INSERT INTO GFMIS_ALL.RECEIPTSTOCK_5D19A_TMP (STOCKID,STARTNO,ENDNO,RECEIPTTYPE,STATUS,COUNT,UNITID,RELATEUSERNAME,GLIDENUM,FLAG,PROCTM,REGISTERTM,DBUSER,ZTOF_STATUS) VALUES (substr(:NEW.STOCKID, 4, length(TRIM(:NEW.STOCKID))),:NEW.STARTNO,:NEW.ENDNO,:NEW.RECEIPTTYPE,:NEW.STATUS,:NEW.COUNT,substr(:NEW.UNITID, 4, length(TRIM(:NEW.UNITID))),:NEW.RELATEUSERNAME,:NEW.GLIDENUM,:NEW.FLAG,:NEW.PROCTM,:NEW.REGISTERTM,NULL,'1');</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> END IF;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> END IF;</div>
<div>&nbsp;<wbr> &nbsp;<wbr></div>
<div>&nbsp;<wbr> &nbsp;<wbr> select seq_exchange_temp.nextval into id from dual;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> curUser :=lower(SYS_CONTEXT('userenv', 'session_user'));</div>
<div>&nbsp;<wbr> &nbsp;<wbr> if (curUser != 'all_exchange_user') then</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> SELECT CURRENT_TIMESTAMP INTO curTime FROM DUAL;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> curTable := 'RECEIPTSTOCK';</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> if (deleting) then</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> v_distno:=substr(:OLD.STOCKID,2,2);</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> select dbuser into v_dbuser from GFMIS_ALL.DISTRICT where distno=v_distno;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> curType := '3';</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> curID := :OLD.stockid;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> if (curUser = 'gfmis_all') then</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> curSQL := 'SP_EX_RECEIPTSTOCK_DEL(''' || :OLD.STOCKID || ''')';</div>
<div>&nbsp;<wbr> &nbsp;<wbr> else</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> curSQL := 'SP_EX_RECEIPTSTOCK_DEL(''' || &nbsp;<wbr>substr(:OLD.STOCKID,4) || ''')';</div>
<div>&nbsp;<wbr> &nbsp;<wbr> end if;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> end if;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> if (updating) then</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> v_distno:=substr(:OLD.STOCKID,2,2);</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> select dbuser into v_dbuser from GFMIS_ALL.DISTRICT where distno=v_distno;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> curType := '2';</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> curID := :OLD.stockid;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> if (curUser = 'gfmis_all') then</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> curSQL := 'SP_EX_RECEIPTSTOCK_UPD(''' || :OLD.STOCKID || ''', ''' || :NEW.COUNT || ''', ''' || FN_FMT_SQL(:NEW.ENDNO) || ''', ''' || FN_FMT_SQL(:NEW.FLAG) || ''', ''' || :NEW.GLIDENUM || ''', ''' || TO_CHAR(:NEW.PROCTM,'YYYY-MM-DD HH24:MI:SS') || ''', ''' || :NEW.RECEIPTTYPE || ''', ''' || TO_CHAR(:NEW.REGISTERTM,'YYYY-MM-DD HH24:MI:SS') || ''', ''' || FN_FMT_SQL(:NEW.RELATEUSERNAME) || ''', ''' || FN_FMT_SQL(:NEW.STARTNO) || ''', ''' || FN_FMT_SQL(:NEW.STATUS) || ''', ''' || :NEW.STOCKID || ''', ''' || :NEW.UNITID || &nbsp;<wbr>''')';</div>
<div>&nbsp;<wbr> &nbsp;<wbr> else</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> curSQL := 'SP_EX_RECEIPTSTOCK_UPD(''' || &nbsp;<wbr>substr(:OLD.STOCKID,4) || ''', ''' || :NEW.COUNT || ''', ''' || FN_FMT_SQL(:NEW.ENDNO) || ''', ''' || FN_FMT_SQL(:NEW.FLAG) || ''', ''' || :NEW.GLIDENUM || ''', ''' || TO_CHAR(:NEW.PROCTM,'YYYY-MM-DD HH24:MI:SS') || ''', ''' || :NEW.RECEIPTTYPE || ''', ''' || TO_CHAR(:NEW.REGISTERTM,'YYYY-MM-DD HH24:MI:SS') || ''', ''' || FN_FMT_SQL(:NEW.RELATEUSERNAME) || ''', ''' || FN_FMT_SQL(:NEW.STARTNO) || ''', ''' || FN_FMT_SQL(:NEW.STATUS) || ''', ''' || &nbsp;<wbr>substr(:NEW.STOCKID ,4) || ''', ''' || &nbsp;<wbr>substr(:NEW.UNITID ,4) || &nbsp;<wbr>''')';</div>
<div>&nbsp;<wbr> &nbsp;<wbr> end if;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> end if;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> if (inserting) then</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> v_distno:=substr(:NEW.STOCKID,2,2);</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> select dbuser into v_dbuser from GFMIS_ALL.DISTRICT where distno=v_distno;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> curType := '1';</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> curID := :NEW.stockid;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> if (curUser = 'gfmis_all') then</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> curSQL := 'SP_EX_RECEIPTSTOCK_INS(''' || :NEW.COUNT || ''', ''' || FN_FMT_SQL(:NEW.ENDNO) || ''', ''' || FN_FMT_SQL(:NEW.FLAG) || ''', ''' || :NEW.GLIDENUM || ''', ''' || TO_CHAR(:NEW.PROCTM,'YYYY-MM-DD HH24:MI:SS') || ''', ''' || :NEW.RECEIPTTYPE || ''', ''' || TO_CHAR(:NEW.REGISTERTM,'YYYY-MM-DD HH24:MI:SS') || ''', ''' || FN_FMT_SQL(:NEW.RELATEUSERNAME) || ''', ''' || FN_FMT_SQL(:NEW.STARTNO) || ''', ''' || FN_FMT_SQL(:NEW.STATUS) || ''', ''' || :NEW.STOCKID || ''', ''' || :NEW.UNITID || &nbsp;<wbr>''')';</div>
<div>&nbsp;<wbr> &nbsp;<wbr> else</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> curSQL := 'SP_EX_RECEIPTSTOCK_INS(''' || :NEW.COUNT || ''', ''' || FN_FMT_SQL(:NEW.ENDNO) || ''', ''' || FN_FMT_SQL(:NEW.FLAG) || ''', ''' || :NEW.GLIDENUM || ''', ''' || TO_CHAR(:NEW.PROCTM,'YYYY-MM-DD HH24:MI:SS') || ''', ''' || :NEW.RECEIPTTYPE || ''', ''' || TO_CHAR(:NEW.REGISTERTM,'YYYY-MM-DD HH24:MI:SS') || ''', ''' || FN_FMT_SQL(:NEW.RELATEUSERNAME) || ''', ''' || FN_FMT_SQL(:NEW.STARTNO) || ''', ''' || FN_FMT_SQL(:NEW.STATUS) || ''', ''' || &nbsp;<wbr>substr(:NEW.STOCKID ,4) || ''', ''' || &nbsp;<wbr>substr(:NEW.UNITID ,4) || &nbsp;<wbr>''')';</div>
<div>&nbsp;<wbr> &nbsp;<wbr> end if;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> end if;</div>
<div><br /></div>
<div>&nbsp;<wbr> &nbsp;<wbr> if (curUser = 'gfmis_all') then</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> INSERT INTO exchange_temp (ID,SEQID, TABLENAME, GENSQL, TYPE, DT, STATUS,ZKSTATUS,DBUSER)</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> VALUES (id, curID,curTable, curSQL, curType, curTime, '2','1',v_dbuser );</div>
<div>&nbsp;<wbr> &nbsp;<wbr> else</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> INSERT INTO exchange_temp (ID,SEQID, TABLENAME, GENSQL, TYPE, DT, STATUS,ZKSTATUS,DBUSER)</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> VALUES (id, curID,curTable, curSQL, curType, curTime, '2','0',v_dbuser );</div>
<div>&nbsp;<wbr> &nbsp;<wbr> end if;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> end if;</div>
<div><br /></div>
<div>&nbsp;<wbr> &nbsp;<wbr> EXCEPTION</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> WHEN OTHERS THEN</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> RAISE;</div>
<div>end TRI_RECEIPTSTOCK_CHG_AFT;</div>
<div><font color="#ff0bf2">/</font></div>
<div><br /></div>
<div>commit;</div></div>
<div><br /></div>
<div>【注】：在每一个DROP语句后面不能加<span style="color: rgb(255,11,242); line-height: 21px">/</span><span style="line-height: 21px">，而在创建PROCEDURE和TRIGGER的之后必须加</span><span style="color: rgb(255,11,242); line-height: 21px">/</span><span style="line-height: 21px">符号，否则下面的脚本会</span></div>
<div><span style="line-height: 21px">&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> 执行失败的。</span></div>
<div><span style="line-height: 21px">&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> 执行txt和sql的脚本写法如下：</span></div>
<div><span style="line-height: 21px">&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr></span>SQL&gt; <font color="#ed1c24">@</font>D:\<span style="line-height: 21px">myoracle</span>.txt;</div>
<div>&nbsp;<wbr></div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> Procedure dropped</div>
<div>&nbsp;<wbr></div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> Procedure created</div>
<div>&nbsp;<wbr></div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> Trigger dropped</div>
<div>&nbsp;<wbr></div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> Trigger created</div>
<div>&nbsp;<wbr></div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> Commit complete</div>
<div>&nbsp;<wbr></div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> SQL&gt;</div>
<div><font color="#ff7e00">exec</font>后面执行跟存储过程名或函数名[exec只能在命令行执行，call可以在任何环境下执行]。</div><img src ="http://www.blogjava.net/chenhg/aggbug/388247.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenhg/" target="_blank">MR.CHEN</a> 2012-09-21 13:09 <a href="http://www.blogjava.net/chenhg/archive/2012/09/21/388247.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle中DBMS_RANDOM包的用法</title><link>http://www.blogjava.net/chenhg/archive/2012/09/21/388245.html</link><dc:creator>MR.CHEN</dc:creator><author>MR.CHEN</author><pubDate>Fri, 21 Sep 2012 05:08:00 GMT</pubDate><guid>http://www.blogjava.net/chenhg/archive/2012/09/21/388245.html</guid><wfw:comment>http://www.blogjava.net/chenhg/comments/388245.html</wfw:comment><comments>http://www.blogjava.net/chenhg/archive/2012/09/21/388245.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenhg/comments/commentRss/388245.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenhg/services/trackbacks/388245.html</trackback:ping><description><![CDATA[<p style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left"><strong><strong></strong>1.dbms_random.value方法</strong></p>
<p style="line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left"><span style="color: rgb(51,51,51)">dbms_random是一个可以生成随机数值或者字符串的程序包。这个包有</span><font color="#4d6df3">initialize</font><font color="#333333">()、</font><font color="#4d6df3">seed</font><font color="#333333">()、</font><font color="#4d6df3">terminate</font><font color="#333333">()、</font><font color="#4d6df3">value</font><font color="#333333">()、</font><font color="#4d6df3">normal</font><font color="#333333">()、</font><font color="#4d6df3">random</font><font color="#333333">()、</font><font color="#4d6df3">string</font><font color="#333333">()等几个函数，但value()是最常用的，value()的用法一般有两个种，第一&nbsp;<wbr></font><br /><font color="#333333">function value return number;&nbsp;<wbr></font><br /><font color="#333333">这种用法没有参数，会返回一个具有38位精度的数值，范围从0.0到1.0，但不包括1.0，如下示例：&nbsp;<wbr></font><br /><font color="#333333">SQL&gt; set serverout on&nbsp;<wbr></font><br /><font color="#333333">SQL&gt; begin&nbsp;<wbr></font><br /><font color="#333333">&nbsp;<wbr> &nbsp;<wbr>2&nbsp;<wbr> &nbsp;<wbr> for i in 1..10 loop&nbsp;<wbr></font><br /><font color="#333333">&nbsp;<wbr> &nbsp;<wbr>3&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>dbms_output.put_line(round(dbms_random.value*100));&nbsp;<wbr></font><br /><font color="#333333">&nbsp;<wbr> &nbsp;<wbr>4&nbsp;<wbr> &nbsp;<wbr> end loop;&nbsp;<wbr></font><br /><font color="#333333">&nbsp;<wbr> &nbsp;<wbr>5&nbsp;<wbr>&nbsp;<wbr>end;&nbsp;<wbr></font><br /><font color="#333333">&nbsp;<wbr> &nbsp;<wbr>6&nbsp;<wbr>&nbsp;<wbr>/&nbsp;<wbr></font><br /><font color="#333333">46&nbsp;<wbr></font><br /><font color="#333333">19&nbsp;<wbr></font><br /><font color="#333333">45&nbsp;<wbr></font><br /><font color="#333333">37&nbsp;<wbr></font><br /><font color="#333333">33&nbsp;<wbr></font><br /><font color="#333333">57&nbsp;<wbr></font><br /><font color="#333333">61&nbsp;<wbr></font><br /><font color="#333333">20&nbsp;<wbr></font><br /><font color="#333333">82&nbsp;<wbr></font><br /><font color="#333333">8&nbsp;<wbr></font><br /><font color="#333333">&nbsp;<wbr>&nbsp;<wbr></font><br /><font color="#333333">PL/SQL 过程已成功完成。&nbsp;<wbr></font><br /><font color="#333333">&nbsp;<wbr>&nbsp;<wbr></font><br /><font color="#333333">SQL&gt;&nbsp;<wbr>&nbsp;<wbr></font><br /><font color="#333333">&nbsp;<wbr>&nbsp;<wbr></font><br /><font color="#333333">第二种value带有两个参数，第一个指下限，第二个指上限，将会生成下限到上限之间的数字，但不包含上限，&#8220;学无止境&#8221;兄说的就是第二种，如下：&nbsp;<wbr></font><br /><font color="#333333">SQL&gt; begin&nbsp;<wbr></font><br /><font color="#333333">&nbsp;<wbr> &nbsp;<wbr>2&nbsp;<wbr> &nbsp;<wbr> for i in 1..10 loop&nbsp;<wbr></font><br /><font color="#333333">&nbsp;<wbr> &nbsp;<wbr>3&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>dbms_output.put_line(trunc(dbms_random.value(1,101)));&nbsp;<wbr></font><br /><font color="#333333">&nbsp;<wbr> &nbsp;<wbr>4&nbsp;<wbr> &nbsp;<wbr> end loop;&nbsp;<wbr></font><br /><font color="#333333">&nbsp;<wbr> &nbsp;<wbr>5&nbsp;<wbr>&nbsp;<wbr>end;&nbsp;<wbr></font><br /><font color="#333333">&nbsp;<wbr> &nbsp;<wbr>6&nbsp;<wbr>&nbsp;<wbr>/&nbsp;<wbr></font><br /><font color="#333333">97&nbsp;<wbr></font><br /><font color="#333333">77&nbsp;<wbr></font><br /><font color="#333333">13&nbsp;<wbr></font><br /><font color="#333333">86&nbsp;<wbr></font><br /><font color="#333333">68&nbsp;<wbr></font><br /><font color="#333333">16&nbsp;<wbr></font><br /><font color="#333333">55&nbsp;<wbr></font><br /><font color="#333333">36&nbsp;<wbr></font><br /><font color="#333333">54&nbsp;<wbr></font><br /><font color="#333333">46&nbsp;<wbr></font><br /><font color="#333333">&nbsp;<wbr>&nbsp;<wbr></font><br /><font color="#333333">PL/SQL 过程已成功完成。&nbsp;<wbr></font></p>
<p style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left">&nbsp;<wbr></p>
<p style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left"><strong>2. dbms_random.string 方法</strong></p>
<p style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left">某些用户管理程序可能需要为用户创建随机的密码。使用10G下的dbms_random.string 可以实现这样的功能。</p>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left">例如：</div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left">SQL&gt; select dbms_random.string('P',8 ) from dual ;</div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left">&nbsp;<wbr></div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left">DBMS_RANDOM.STRING('P',8)</div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left">--------------------------------------------------------------------------------</div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left">3q&lt;M"yf[</div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left">&nbsp;<wbr></div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left">第一个参数的含义：</div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left">&#9632; 'u', 'U' - returning string in uppercase alpha characters</div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left">&#9632; 'l', 'L' - returning string in lowercase alpha characters</div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left">&#9632; 'a', 'A' - returning string in mixed case alpha characters</div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left">&#9632; 'x', 'X' - returning string in uppercase alpha-numeric</div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left">characters</div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left">&#9632; 'p', 'P' - returning string in any printable characters.</div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left">Otherwise the returning string is in uppercase alpha</div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left">characters.</div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left"><font face="宋体">P 表示 printable，即字符串由任意可打印字符构成</font><br /></div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left">而第二个参数表示返回的字符串长度。</div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left"></div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left"></div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left"><strong>3. dbms_random.<font size="2">random&nbsp;<wbr></font>方法</strong></div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left"></div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><font face="Verdana" size="2">random返回的是BINARY_INTEGER类型值,<font face="宋体">产生一个任意大小的随机数</font></font></div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left"><font face="Verdana" size="2">&nbsp;<wbr> 与<font face="Arial">dbms_random.value 的区别举例:</font></font></div>
<div style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left"><font size="2">&nbsp;<wbr>&nbsp;<wbr> Order By dbms_random.value;<br />这条语句功能是实现记录的随机排序<br />另外：<br />dbms_random.value 和<br />dbms_random.random 两者之间有什么区别？<font face="verdana, arial, helvetica" size="2"><br />1。Order By dbms_random.value ，为结果集的每一行计算一个随机数，dbms_random.value 是结果集的一个列（虽然这个列并不在select list 中），然后根据该列排序，得到的顺序自然就是随机的啦。<br />2。看看desc信息便知道vlue和random这两个函数的区别了，value返回的是number类型，<a style="color: #000000" href="http://www.tbwshc.com">tb</a>并且返回的值介于1和0之间，而random返回的是BINARY_INTEGER类型（以二进制形式存储的数字，据说运算的效率高于number但我没测试过，但取值范围肯定小于number，具体限制得查资料了）<br />如果你要实现随机排序，还是用value函数吧</font></font></div>
<p style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left">&nbsp;<wbr></p>
<p style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left"><strong>4. dbms_random.normal方法</strong></p>
<p style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left"><font face="宋体">NORMAL函数返回服从正态分布的一组数。此正态分布标准偏差为1，期望值为0。这个函数返回的数值中有68%是介于-1与+1之间，95%介于-2与+2之间，99%介于-3与+3之间。</font></p>
<p style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left"><strong>5. dbms_random.send方法</strong>&nbsp;<wbr>&nbsp;<wbr></p>
<p style="color: rgb(51,51,51); line-height: 26px; font-family: Arial; background-color: rgb(255,255,255); text-align: left"><font face="verdana, arial, helvetica" size="2"><span style="font-size: 12px">用于生成一个随机数种子,设置种子的目的是可以重复生成随机数，用于调试。否则每次不同，难以调度。</span></font></p><img src ="http://www.blogjava.net/chenhg/aggbug/388245.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenhg/" target="_blank">MR.CHEN</a> 2012-09-21 13:08 <a href="http://www.blogjava.net/chenhg/archive/2012/09/21/388245.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle中DBMS_SQL的用法</title><link>http://www.blogjava.net/chenhg/archive/2012/09/21/388244.html</link><dc:creator>MR.CHEN</dc:creator><author>MR.CHEN</author><pubDate>Fri, 21 Sep 2012 05:07:00 GMT</pubDate><guid>http://www.blogjava.net/chenhg/archive/2012/09/21/388244.html</guid><wfw:comment>http://www.blogjava.net/chenhg/comments/388244.html</wfw:comment><comments>http://www.blogjava.net/chenhg/archive/2012/09/21/388244.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenhg/comments/commentRss/388244.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenhg/services/trackbacks/388244.html</trackback:ping><description><![CDATA[<div>对于一般的select操作,如果使用动态的sql语句则需要进行以下几个步骤:</div>
<div>open &nbsp;<wbr> cursor---&gt; parse---&gt; define &nbsp;<wbr> column---&gt; excute---&gt; fetch &nbsp;<wbr> rows---&gt; close &nbsp;<wbr> cursor;</div>
<div>而对于dml操作(insert,update)则需要进行以下几个步骤:</div>
<div>open &nbsp;<wbr> cursor---&gt; parse---&gt; bind &nbsp;<wbr> variable---&gt; execute---&gt; close &nbsp;<wbr> cursor;</div>
<div>对于delete操作只需要进行以下几个步骤:</div>
<div>open &nbsp;<wbr> cursor---&gt; parse---&gt; execute---&gt; close &nbsp;<wbr> cursor;</div>
<div><br /></div>
<div>例一：</div>
<div>create table test(n_id &nbsp;<wbr> number, &nbsp;<wbr>v_name &nbsp;<wbr>varchar2(50), d_insert_date date);</div>
<div>alter table test add constraint pk_id &nbsp;<wbr>primary key(n_id);</div>
<div><br /></div>
<div>declare</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_cursor &nbsp;<wbr> number;</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_sql &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>varchar2(200);</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_id &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> number;</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_name &nbsp;<wbr> &nbsp;<wbr> varchar2(50);</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_date &nbsp;<wbr> &nbsp;<wbr> date;</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_stat &nbsp;<wbr> &nbsp;<wbr> number;</div>
<div>begin</div>
<div>&nbsp;<wbr>&nbsp;<wbr></div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_id := 1;</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_name := '测试 insert';</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_date := sysdate;</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_cursor := dbms_sql.open_cursor; &nbsp;<wbr><font color="#22b14c">--打开游标</font></div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_sql := 'insert into test(n_id, v_name, d_insert_date) values(:v_id,:v_name,:v_date)';</div>
<div>&nbsp;<wbr> &nbsp;<wbr>dbms_sql.parse(v_cursor, v_sql, dbms_sql.native); &nbsp;<wbr><font color="#22b14c">--解析SQL</font></div>
<div>&nbsp;<wbr> &nbsp;<wbr>dbms_sql.bind_variable(v_cursor, ':v_id', v_id); &nbsp;<wbr> <font color="#22b14c">--绑定变量</font></div>
<div>&nbsp;<wbr> &nbsp;<wbr>dbms_sql.bind_variable(v_cursor, ':v_name', v_name);</div>
<div>&nbsp;<wbr> &nbsp;<wbr>dbms_sql.bind_variable(v_cursor, ':v_date', v_date);</div>
<div>&nbsp;<wbr>&nbsp;<wbr></div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_stat := dbms_sql.execute(v_cursor); &nbsp;<wbr><font color="#22b14c">--执行</font></div>
<div>&nbsp;<wbr> &nbsp;<wbr>dbms_sql.close_cursor(v_cursor); &nbsp;<wbr> <font color="#22b14c">--关闭游标</font></div>
<div>&nbsp;<wbr> &nbsp;<wbr>commit;</div>
<div>end;</div>
<div><br /></div>
<div>例二：</div>
<div><br /></div>
<div>declare</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_cursor &nbsp;<wbr> number;</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_sql &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>varchar2(200);</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_id &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> number;</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_name &nbsp;<wbr> &nbsp;<wbr> varchar2(50);</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_stat &nbsp;<wbr> &nbsp;<wbr> number;</div>
<div>begin</div>
<div>&nbsp;<wbr> &nbsp;<wbr> v_name := '测试 update';</div>
<div>&nbsp;<wbr> &nbsp;<wbr> v_id := 1;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> v_cursor := dbms_sql.open_cursor;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> v_sql := 'update test set v_name = :v_name, d_insert_date = :v_date where n_id = :v_id';</div>
<div>&nbsp;<wbr> &nbsp;<wbr> dbms_sql.parse(v_cursor, v_sql, dbms_sql.native);</div>
<div>&nbsp;<wbr> &nbsp;<wbr> dbms_sql.bind_variable(v_cursor, ':v_name', v_name);</div>
<div>&nbsp;<wbr> &nbsp;<wbr> dbms_sql.bind_variable(v_cursor, ':v_date', sysdate);</div>
<div>&nbsp;<wbr> &nbsp;<wbr> dbms_sql.bind_variable(v_cursor, ':v_id', v_id);</div>
<div>&nbsp;<wbr> &nbsp;<wbr> v_stat := dbms_sql.execute(v_cursor);</div>
<div>&nbsp;<wbr> &nbsp;<wbr> dbms_sql.close_cursor(v_cursor);</div>
<div>&nbsp;<wbr> &nbsp;<wbr> commit;</div>
<div>end;</div>
<div><br /></div>
<div>例三：</div>
<div><br /></div>
<div>declare</div>
<div>&nbsp;<wbr> &nbsp;<wbr> v_cursor &nbsp;<wbr> number;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> v_sql &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>varchar2(200);</div>
<div>&nbsp;<wbr> &nbsp;<wbr> v_id &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> number;</div>
<div>&nbsp;<wbr> &nbsp;<wbr> v_stat &nbsp;<wbr> &nbsp;<wbr> number;</div>
<div>begin</div>
<div><br /></div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_id := 1;</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_sql := 'delete from test where n_id = :v_id';</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_cursor := dbms_sql.open_cursor;</div>
<div>&nbsp;<wbr> &nbsp;<wbr>dbms_sql.parse(v_cursor, v_sql, dbms_sql.native);</div>
<div>&nbsp;<wbr> &nbsp;<wbr>dbms_sql.bind_variable(v_cursor, ':v_id', v_id);</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_stat := dbms_sql.execute(v_cursor);</div>
<div>&nbsp;<wbr> &nbsp;<wbr>dbms_sql.close_cursor(v_cursor);</div>
<div>&nbsp;<wbr> &nbsp;<wbr>commit;</div>
<div>end;</div>
<div><br /></div>
<div>例四：</div>
<div><br /></div>
<div>declare</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_cursor &nbsp;<wbr> &nbsp;<wbr>number;</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_sql &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> varchar2(200);</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_id &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>number;</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_name &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>varchar2(50);</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_date &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>varchar2(10);</div>
<div>&nbsp;<wbr> &nbsp;<wbr>v_stat &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr>number;</div>
<div>begin</div>
<div><br /></div>
<div>&nbsp;<wbr> &nbsp;<wbr> v_sql := 'select n_id, v_name, to_char(d_insert_date, ''yyyy-mm-dd'') from test';</div>
<div>&nbsp;<wbr> &nbsp;<wbr> v_cursor := dbms_sql.open_cursor; &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr><font color="#22b14c">--打开游标</font></div>
<div>&nbsp;<wbr> &nbsp;<wbr> dbms_sql.parse(v_cursor, v_sql, dbms_sql.native); &nbsp;<wbr><font color="#22b14c">--解析游标</font></div>
<div>&nbsp;<wbr> &nbsp;<wbr> dbms_sql.define_column(v_cursor, 1, v_id); &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> <font color="#22b14c">--定义列</font></div>
<div>&nbsp;<wbr> &nbsp;<wbr> dbms_sql.define_column(v_cursor, 2, v_name, 50); &nbsp;<wbr> <font color="#22b14c">--注意：当变量为varchar2类型时，要加长度</font></div>
<div>&nbsp;<wbr> &nbsp;<wbr> dbms_sql.define_column(v_cursor, 3, v_date, 10);</div>
<div>&nbsp;<wbr> &nbsp;<wbr> v_stat := dbms_sql.execute(v_cursor); &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr><font color="#22b14c">--执行SQL</font></div>
<div>&nbsp;<wbr> &nbsp;<wbr> loop</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> exit when dbms_sql.fetch_rows(v_cursor) &lt;= 0; &nbsp;<wbr><font color="#22b14c">--fetch_rows在结果集中移动游标，如果未抵达末尾，返回1。</font></div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> dbms_sql.column_value(v_cursor, 1, v_id); &nbsp;<wbr> <font color="#22b14c">--将当前行的查询结果写入上面定义的列中。</font></div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> dbms_sql.column_value(v_cursor, 2, v_name);</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> dbms_sql.column_value(v_cursor, 3, v_date);</div>
<div>&nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> &nbsp;<wbr> dbms_output.put_line(v_id || ':' || v_name || ':' || v_date);</div>
<div>&nbsp;<wbr> &nbsp;<wbr> end loop;</div>
<div>end;</div>
<div><br /></div>
<div>--------------------------------------------------------------------------------------------------</div>
<div>
<div style="font-size: 13px; line-height: 16px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(255,255,255)"><font size="2">PL/SQL中使用动态SQL编程<br /><br /><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span>在PL/SQL程序设计过程中，会遇到很多必须使用动态sql的地方，oracle系统所<a href="http://www.tbwshc.com"><span style="color: #000000">tb</span></a>提供的DMBS_SQL包可以帮助你解决问题。<br /></font></div>
<div style="font-size: 13px; line-height: 16px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(255,255,255)"></div>
<div style="font-size: 13px; line-height: 16px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(255,255,255)"><font size="2"><strong>(一)介绍</strong></font></div>
<div style="font-size: 13px; line-height: 16px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(255,255,255)"><br /><font size="2"><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span>DBMS_SQL系统包提供了很多函数及过程,现在简要阐述其中使用频率较高的几种:<br /><br /><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><font color="#ff0000">function open_cursor</font>:打开一个动态游标,并返回一个整型;<br /><br /><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><font color="#ff0000">procedure close_cursor(c in out integer)</font></font>&nbsp;<wbr><font color="#000000"><font size="2"><span style="font-size: 13px; line-height: 15px">:</span>关闭一个动态游标,参数为open_cursor所打开的游标;<br /><br /><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><font color="#ff0000">procedure parse(c in integer, statement in varchar2, language_flag in integer)</font>:对动态游标所提供的sql语句进行解析,参数C表示游标,statement为sql语句,language-flag为解析sql语句所用oracle版本,一般有V6,V7跟native(在不明白所连database版本时,使用native);<br /><br /><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><font color="#ff0000">procedure define_column(c in integer, position in integer, column any datatype, [column_size in integer])</font>:定义动态游标所能得到的对应值,其中c为动态游标,positon为对应动态sql中的位置(从1开始),column为该值所对应的变量,可以为任何类型,column_size只有在column为定义长度的类型中使用如VARCHAR2,CHAR等(该过程有很多种情况,此处只对一般使用到的类型进行表述);<br /><br /><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><font color="#ff0000">function execute(c in integer)</font>:执行游标,并返回处理一个整型,代表处理结果(对insert,delete,update才有意义,而对select语句而言可以忽略);<br /><br /><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><font color="#ff0000">function fetch_rows(c in integer)</font>:对游标进行循环取数据,并返回一个整数,为0时表示已经取到游标末端;<br /><br /><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><font color="#ff0000">procedure column_value(c in integer, position in integer, value)</font>:将所取得的游标数据赋值到相应的变量,c为游标,position为位置,value则为对应的变量;<br /><br /><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><font color="#ff0000">procedure bind_variable(c in integer, name in varchar2, value)</font>:定义动态sql语句(DML)中所对应字段的值,c为游标,name为字段名称,value为字段的值;<br /><br /><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span>以上是在程序中经常使用到的几个函数及过程,其他函数及过程请参照oracle所提供定义语句dbmssql.sql<br /></font></font></div>
<div style="font-size: 13px; line-height: 16px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(255,255,255)"><br /><strong><font size="2">(二)一般过程</font></strong></div>
<div style="font-size: 13px; line-height: 16px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(255,255,255)"><br /><font size="2"><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span>对于一般的select操作,如果使用动态的sql语句则需要进行以下几个步骤:<br /><font color="#ff0000"><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span>open cursor---&gt;parse---&gt;define column---&gt;excute---&gt;fetch rows---&gt;close cursor;</font><br /></font></div>
<div style="font-size: 13px; line-height: 16px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(255,255,255)"><font size="2"><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span>而对于dml操作(insert,update)则需要进行以下几个步骤:<br /><font color="#ff0000"><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span>open cursor---&gt;parse---&gt;bind variable---&gt;execute---&gt;close cursor;</font><br /></font></div>
<div style="font-size: 13px; line-height: 16px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(255,255,255)"><font size="2"><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span>对于delete操作只需要进行以下几个步骤:<br /><font color="#ff0000"><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span>open cursor---&gt;parse---&gt;execute---&gt;close cursor;</font><br /></font></div>
<div style="font-size: 13px; line-height: 16px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(255,255,255)"><br /><strong><font size="2">(三)具体案例</font></strong></div>
<div style="font-size: 13px; line-height: 16px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(255,255,255)"><br /><font size="2"><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span>下面就本人所开发系统中某一程序做分析<br /><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span>该过程为一股票技术曲线计算程序,将数据从即时数据表中取出,并按照计算曲线的公式,<a href="http://www.tbwshc.com/"><span style="color: #000000"><font size="2">tb</font></span></a>对这些数据进行计算,并将结果保存到技术曲线表中.<br /></font></div>
<div style="font-size: 13px; line-height: 16px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(255,255,255)"><font size="2"><font face="Courier New" color="#800080">--**********************************<br />--procedure name:R_Ma_Main<br />--入口参数：PID股票代码,PEND时间,pinterval时间间隔,totab目标数据表<br />--调用函数：R_GetSql1,R_GetSql2<br />--功能：具体计算单支股票ma技术曲线<br />--时间：2001-06-20<br />--**********************************<br />create or replace procedure R_Ma_Main<br />&nbsp;<wbr>&nbsp;<wbr>(<br />&nbsp;<wbr> &nbsp;<wbr>pid varchar2,<br />&nbsp;<wbr> &nbsp;<wbr>pend varchar2,<br />&nbsp;<wbr> &nbsp;<wbr>pinterval varchar2,<br />&nbsp;<wbr> &nbsp;<wbr>totab varchar2<br />&nbsp;<wbr>&nbsp;<wbr>) is&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr><br />&nbsp;<wbr>&nbsp;<wbr><br />--定义数组<br />type Date_type is table of varchar2(12) index by binary_integer;<br />type Index_type is table of number index by binary_integer;<br /><br />TempDate Date_Type;--时间数组<br />TempIndex Index_Type;--股票收盘价数组<br />TempMa Index_Type;--ma技术曲线数据<br /><br />cursor1 integer;--游标<br />cursor2 integer;--游标<br />rows_processed integer;--执行游标返回<br /><br />TempInter integer;--参与计算数值个数<br />TempVal integer;--计算时间类型<br />TempSql varchar2(500);--动态sql语句<br />MyTime varchar2(12);--时间<br />MyIndex number;--数值<br />MidIndex number;--中间变量<br />i integer := 999;<br />j integer;<br />begin<br />&nbsp;<wbr>&nbsp;<wbr>TempInter := to_number(substr(pinterval,1,4));<br />&nbsp;<wbr>&nbsp;<wbr>TempVal := to_number(substr(pinterval,5,2));<br />&nbsp;<wbr>&nbsp;<wbr>TempSql := R_GetSql1(pid, pend, TempVal);--得到选择数据的sql语句<br /><br />&nbsp;<wbr>&nbsp;<wbr>--得到当天的即时数据,并依次保存到数组中<br />&nbsp;<wbr>&nbsp;<wbr>cursor1 := dbms_sql.open_cursor;&nbsp;<wbr>&nbsp;<wbr>--创建游标<br />&nbsp;<wbr>&nbsp;<wbr>dbms_sql.parse(cursor1, TempSql, dbms_sql.native);&nbsp;<wbr>&nbsp;<wbr>--解析动态sql语句,取两个字段,时间及价格,其中时间以14位的varchar2表示<br />&nbsp;<wbr>&nbsp;<wbr>dbms_sql.define_column(cursor1, 1, MyTime, 12);&nbsp;<wbr>&nbsp;<wbr>--分别定义sql语句中各字段所对应变量<br />&nbsp;<wbr>&nbsp;<wbr>dbms_sql.define_column(cursor1, 2, MyIndex);<br />&nbsp;<wbr>&nbsp;<wbr>rows_processed := dbms_sql.execute(cursor1);<br />&nbsp;<wbr>&nbsp;<wbr>loop<br />&nbsp;<wbr> &nbsp;<wbr> if dbms_sql.fetch_rows(cursor1) &gt; 0 then<br />&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>begin<br />&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>dbms_sql.column_value(cursor1, 1, MyTime);<br />&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>dbms_sql.column_value(cursor1, 2, MyIndex);<br />&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>TempDate(i) := MyTime;<br />&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>TempIndex(i) := MyIndex;<br />&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>i := i - 1;--按倒序的方法填入数组<br />&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>end;<br />&nbsp;<wbr> &nbsp;<wbr> else<br />&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>exit;<br />&nbsp;<wbr> &nbsp;<wbr> end if;<br />&nbsp;<wbr>&nbsp;<wbr>end loop;<br />&nbsp;<wbr>&nbsp;<wbr>dbms_sql.close_cursor(cursor1);<br />&nbsp;<wbr>&nbsp;<wbr><br />&nbsp;<wbr>&nbsp;<wbr>--如果取得的数据量不够计算个数,则跳出程序<br />&nbsp;<wbr>&nbsp;<wbr>if i &gt; 999-TempInter then<br />&nbsp;<wbr> &nbsp;<wbr> goto JumpLess;<br />&nbsp;<wbr>&nbsp;<wbr>end if;<br />&nbsp;<wbr>&nbsp;<wbr><br />&nbsp;<wbr>&nbsp;<wbr>--初始化中间变量<br />&nbsp;<wbr>&nbsp;<wbr>MidIndex := 0;<br />&nbsp;<wbr>&nbsp;<wbr>TempIndex(i) := 0;<br />&nbsp;<wbr>&nbsp;<wbr>for j in i..i+TempInter-1 loop<br />&nbsp;<wbr> &nbsp;<wbr> MidIndex := MidIndex + TempIndex(j);<br />&nbsp;<wbr>&nbsp;<wbr>end loop;&nbsp;<wbr><br /><br />&nbsp;<wbr>&nbsp;<wbr>--依次对当天数据计算ma值,并保存到ma数组中<br />&nbsp;<wbr>&nbsp;<wbr>for j in i+TempInter..999 loop<br />&nbsp;<wbr> &nbsp;<wbr> MidIndex := MidIndex - TempIndex(j-TempInter) + TempIndex(j);<br />&nbsp;<wbr> &nbsp;<wbr> TempMa(j) := MidIndex/TempInter;<br />&nbsp;<wbr>&nbsp;<wbr>end loop;&nbsp;<wbr> &nbsp;<wbr><br /><br />&nbsp;<wbr>&nbsp;<wbr>if TempVal &lt; 6 then--如果计算的是分钟跟天的ma技术曲线<br />&nbsp;<wbr> &nbsp;<wbr> begin<br />&nbsp;<wbr> &nbsp;<wbr> cursor2 := dbms_sql.open_cursor;<br />&nbsp;<wbr> &nbsp;<wbr> TempSql := 'insert into ' || totab || ' values(:r_no, :i_interval, :i_time, :i_index)';<br />&nbsp;<wbr> &nbsp;<wbr> dbms_sql.parse(cursor2, TempSql, dbms_sql.native);&nbsp;<wbr><br />&nbsp;<wbr> &nbsp;<wbr> for j in i+TempInter..999 loop<br />&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>dbms_sql.bind_variable(cursor2, 'r_no', pid);<br />&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>dbms_sql.bind_variable(cursor2, 'i_interval', pinterval);<br />&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>dbms_sql.bind_variable(cursor2, 'i_time', TempDate(j));<br />&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>dbms_sql.bind_variable(cursor2, 'i_index', TempMa(j));<br />&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>rows_processed := dbms_sql.execute(cursor2);--插入数据<br />&nbsp;<wbr> &nbsp;<wbr> end loop;<br />&nbsp;<wbr> &nbsp;<wbr> end;<br />&nbsp;<wbr>&nbsp;<wbr>end if;&nbsp;<wbr><br />&nbsp;<wbr>&nbsp;<wbr>commit;<br />&nbsp;<wbr>&nbsp;<wbr>dbms_sql.close_cursor(cursor2);<br />&nbsp;<wbr>&nbsp;<wbr>--数据量不足跳出<br />&nbsp;<wbr>&nbsp;<wbr>&lt;&lt;JumpLess&gt;&gt;<br />&nbsp;<wbr>&nbsp;<wbr>null;<br />&nbsp;<wbr>&nbsp;<wbr><br />&nbsp;<wbr>&nbsp;<wbr>--exception处理,无关本话题<br />end;<br />/<br /></font></font></div>
<div style="font-size: 13px; line-height: 16px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(255,255,255)"><br /><strong><font size="2">(四)个人观点</font></strong></div>
<div style="font-size: 13px; line-height: 16px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(255,255,255)"><br /><font size="2"><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span>在使用dbms_sql系统包的过程中,其方法简单而又不失灵活,但还是需要注意一些问题:<br /></font></div>
<div style="font-size: 13px; line-height: 16px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(255,255,255)"><font size="2"><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span>1、在整个程序的设计过程中,对游标的操作切不可有省略的部分,一旦省略其中某一步骤,则会程序编译过程既告失败,如在程序结尾处未对改游标进行关闭操作,则在再次调用过程时会出现错误.<br /><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span>2、dbms_sql除了可以做一般的select,insert,update,delete等静态的sql做能在过程中所做工作外,还能执行create等DDL操作,不过在执行该类操作时应首先显式赋予执行用户相应的系统权限,比如create table等.该类操作只需open cursor---&gt;prase---&gt;close cursor即能完成.<br /><br /><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span>以上为本人在工作中对dbms_sql的一点点看法,不到之处,请予指正.<br /><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span>对于想更深了解dbms_sql的朋友,请阅读dbmssql.sql文件.<br /></font></div>
<div style="font-size: 13px; line-height: 16px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(255,255,255)">&nbsp;<wbr></div>
<div style="font-size: 13px; line-height: 16px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(255,255,255)">&nbsp;<wbr></div>
<div style="font-size: 13px; line-height: 16px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(255,255,255)"><font size="2">附个<span style="font-size: 13px; line-height: 15px">Oracle自带的流程说明(强大啊)：</span></font></div>
<div style="font-size: 13px; line-height: 16px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(255,255,255)">&nbsp;<wbr></div>
<div style="font-size: 13px; line-height: 16px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(255,255,255)"><font face="Courier New" color="#ff0000" size="2"><span style="font-size: 13px; line-height: 15px">&nbsp;<wbr> --&nbsp;<wbr> The flow of procedure calls will typically look like this:<br />&nbsp;<wbr> --<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> -----------<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> | open_cursor |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> -----------<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> v<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> -----<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ------------&gt;| parse |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> -----<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |---------<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> v&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> --------------&nbsp;<wbr> |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |--------&gt;| bind_variable | |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ^&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> -------------&nbsp;<wbr>&nbsp;<wbr> |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> -----------|&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&lt;--------<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> v<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> query?---------- yes ---------<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> no&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> v&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> v<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> -------&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> -------------<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |-----------&gt;| execute |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> -&gt;| define_column |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> -------&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> -------------<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |------------&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ----------|<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> v&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> v<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> --------------&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> -------<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> -&gt;| variable_value |&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr> ------&gt;| execute |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> --------------&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> | |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> -------<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> | |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ----------|&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> | |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> | |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> v<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> | |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ----------<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&lt;-----------&nbsp;<wbr> |-----&gt;| fetch_rows |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ----------<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> v<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> --------------------<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr> | column_value&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr> | variable_value&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ---------------------<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&lt;--------------------------<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> -----------------|<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> v<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ------------<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> | close_cursor |<br />&nbsp;<wbr> --&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> ------------&nbsp;<wbr><br />&nbsp;<wbr> --<br />&nbsp;<wbr> ---------------</span></font></div></div><img src ="http://www.blogjava.net/chenhg/aggbug/388244.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenhg/" target="_blank">MR.CHEN</a> 2012-09-21 13:07 <a href="http://www.blogjava.net/chenhg/archive/2012/09/21/388244.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>js 异步加载 延迟执行 插件 </title><link>http://www.blogjava.net/chenhg/archive/2012/09/18/387997.html</link><dc:creator>MR.CHEN</dc:creator><author>MR.CHEN</author><pubDate>Tue, 18 Sep 2012 08:29:00 GMT</pubDate><guid>http://www.blogjava.net/chenhg/archive/2012/09/18/387997.html</guid><wfw:comment>http://www.blogjava.net/chenhg/comments/387997.html</wfw:comment><comments>http://www.blogjava.net/chenhg/archive/2012/09/18/387997.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenhg/comments/commentRss/387997.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenhg/services/trackbacks/387997.html</trackback:ping><description><![CDATA[<p><span style="color: #000000">最近因工作的需要主要做web前段的优化，其中之一就是js的优化，在项目中的js代码相对比较规范的，都是$(function(){})这种格式。但是大家都知道js的下载比较耗时的，它的解析和执行是阻塞式的。我们是否可以先让js下载下来，在windows的load事件中在去解析和执行了。答案是肯定的，其中ControlJS .js就实现了这种方式。个人觉得它比LAB的延迟加载要优秀的一点，减少了js的加载时间。但是该js功能相对比较强大，同时也没有解决js依赖关系的加载。个人自己写了一个小插件 来实现js异步加载延迟执行。</span></p>
<p><br /><span style="color: #000000">代码如下：</span></p>
<p>&nbsp;</p>
<p><span style="color: #000000">[javascript]</span><br /><span style="color: #000000">(function () {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; var document = window.document;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; var getAttribute = function (elem, name) {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var attrs = elem.attributes;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var len = attrs.length;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i = 0; i &lt; len; i++) {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var attr = attrs[i];&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (name === attr.nodeName) {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return attr.nodeValue;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;</span><br />&nbsp;<br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return undefined;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; };&nbsp;</span><br />&nbsp;<br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; var scripts<a style="color: #000000" href="http://www.tbwshc.com">tb</a>Data;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; var orders = [];&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; var findScripts = function () {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var aScripts = document.getElementsByTagName('script');&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var len = aScripts.length;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var scriptsArr = [];&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var scriptsSrc = [];&nbsp;</span><br />&nbsp;<br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i = 0; i &lt; len; i++) {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var script = aScripts[i];&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ("text/asynjs" === getAttribute(script, "type") &amp;&amp; "undefined" === typeof (script.founded)) {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; script.founded = true;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var order = getAttribute(script, "order") || getAttribute(script, "data-order") || 0;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; script.order = order;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (orders.indexOf(order) &lt; 0) {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orders.push(order);&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var src = getAttribute(script, "asynsrc") || getAttribute(script, "data-asynsrc");&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; script.src = src;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (src &amp;&amp; scriptsSrc.indexOf(src) &lt; 0) {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scriptsArr.push(script);&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;</span><br />&nbsp;<br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orders.sort(function compare(a, b) { return a - b; });&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return scriptsData = scriptsArr;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; };&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; var downloadScripts = function (scriptArr) {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var scripts = scriptArr || findScripts();&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var len = scripts.length;&nbsp;</span><br />&nbsp;<br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i = 0; i &lt; len; i++) {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var img = new Image();&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; img.src = scripts[i].src;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; img.style.display = "none";&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; };&nbsp;</span><br />&nbsp;<br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; var processScripts = function (scriptArr) {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var scripts = (scriptArr &amp;&amp; scriptArr.constructor === Array) ? scriptArr : scriptsData;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var len = scripts.length;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var failscripts = [];&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var wdata = [];&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i = orders.length - 1; i &gt;= 0; i--) {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var order = orders[i];&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var urls = [];&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var fns = [];&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var j = 0, len = scripts.length; j &lt; len; j++) {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var script = scripts[j];&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (script.order == order) {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; urls.push(script.src);&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (i == orders.length - 1) {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wdata[order] = processScript(urls)&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var nextorder = orders[i + 1];&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fns.push(wdata[nextorder]);&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wdata[order] = processScript(urls, fns);&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var exorder = orders[0]&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wdata[orders[0]]();&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; };&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; var processScript = function (urls, fn) {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return function () {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i = 0; i &lt; urls.length; i++) {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var se = document.createElement('script');&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (fn &amp;&amp; fn[i]) {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; se.onload = se.onreadystatechange = fn[i];&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; se.src = urls[i];&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var s1 = document.getElementsByTagName('script')[0];&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s1.parentNode.insertBefore(se, s1);&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; }&nbsp;</span><br />&nbsp;<br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; if (document.addEventListener) {&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.addEventListener("DOMContentLoaded", function () { downloadScripts(); }, false);&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.addEventListener("load", function () { setTimeout(processScripts, 0); }, false);&nbsp;</span><br />&nbsp;<br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; } else if (document.attachEvent) {&nbsp;</span><br />&nbsp;<br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.attachEvent("onreadystatechange", function () { downloadScripts(); });&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.attachEvent("onload", function () { setTimeout(processScripts, 0); });&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; }&nbsp;</span><br />&nbsp;<br /><span style="color: #000000">})();&nbsp;</span><br /><span style="color: #000000">(function () {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; var document = window.document;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; var getAttribute = function (elem, name) {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var attrs = elem.attributes;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var len = attrs.length<a style="color: #000000" href="http://www.tbwshc.com/">tb</a>;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i = 0; i &lt; len; i++) {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var attr = attrs[i];</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (name === attr.nodeName) {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return attr.nodeValue;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return undefined;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; };</span></p>
<p><span style="color: #000000">&nbsp;&nbsp;&nbsp; var scriptsData;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; var orders = [];</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; var findScripts = function () {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var aScripts = document.getElementsByTagName('script');</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var len = aScripts.length;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var scriptsArr = [];</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var scriptsSrc = [];</span></p>
<p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i = 0; i &lt; len; i++) {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var script = aScripts[i];</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ("text/asynjs" === getAttribute(script, "type") &amp;&amp; "undefined" === typeof (script.founded)) {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; script.founded = true;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var order = getAttribute(script, "order") || getAttribute(script, "data-order") || 0;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; script.order = order;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (orders.indexOf(order) &lt; 0) {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orders.push(order);</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var src = getAttribute(script, "asynsrc") || getAttribute(script, "data-asynsrc");</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; script.src = src;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (src &amp;&amp; scriptsSrc.indexOf(src) &lt; 0) {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scriptsArr.push(script);</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orders.sort(function compare(a, b) { return a - b; });</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return scriptsData = scriptsArr;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; };</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; var downloadScripts = function (scriptArr) {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var scripts = scriptArr || findScripts();</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var len = scripts.length;</span></p>
<p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i = 0; i &lt; len; i++) {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var img = new Image();</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; img.src = scripts[i].src;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; img.style.display = "none";</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; };</span></p>
<p><span style="color: #000000">&nbsp;&nbsp;&nbsp; var processScripts = function (scriptArr) {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var scripts = (scriptArr &amp;&amp; scriptArr.constructor === Array) ? scriptArr : scriptsData;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var len = scripts.length;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var failscripts = [];</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var wdata = [];</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i = orders.length - 1; i &gt;= 0; i--) {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var order = orders[i];</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var urls = [];</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var fns = [];</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var j = 0, len = scripts.length; j &lt; len; j++) {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var script = scripts[j];</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (script.order == order) {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; urls.push(script.src);</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (i == orders.length - 1) {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wdata[order] = processScript(urls)</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var nextorder = orders[i + 1];</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fns.push(wdata[nextorder]);</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wdata[order] = processScript(urls, fns);</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var exorder = orders[0]</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wdata[orders[0]]();</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; };</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; var processScript = function (urls, fn) {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return function () {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i = 0; i &lt; urls.length; i++) {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var se = document.createElement('script');</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (fn &amp;&amp; fn[i]) {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; se.onload = se.onreadystatechange = fn[i];</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; se.src = urls[i];</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var s1 = document.getElementsByTagName('script')[0];</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s1.parentNode.insertBefore(se, s1);</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="color: #000000">&nbsp;&nbsp;&nbsp; if (document.addEventListener) {</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.addEventListener("DOMContentLoaded", function () { downloadScripts(); }, false);</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.addEventListener("load", function () { setTimeout(processScripts, 0); }, false);</span></p>
<p><span style="color: #000000">&nbsp;&nbsp;&nbsp; } else if (document.attachEvent) {</span></p>
<p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.attachEvent("onreadystatechange", function () { downloadScripts(); });</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.attachEvent("onload", function () { setTimeout(processScripts, 0); });</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="color: #000000">})();调用代码：</span></p>
<p><br /><span style="color: #000000">[html]</span><br /><span style="color: #000000">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&nbsp;</span><br /><span style="color: #000000">&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;&nbsp;</span><br /><span style="color: #000000">&lt;head&gt;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; &lt;title&gt;test&lt;/title&gt;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; &lt;script type="text/javascript" src="Scripts/asynload.js"&gt;&lt;/script&gt;&nbsp;</span><br /><span style="color: #000000">&lt;/head&gt;&nbsp;</span><br /><span style="color: #000000">&lt;body&gt;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; &lt;div id="container"&gt;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;img src="images/bmw_m1_hood.jpg" width="765" height="574" alt="BMW M1 Hood"&gt;&nbsp;</span><br />&nbsp;<br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type="text/asynjs" order="3" asynsrc="test.js"&gt;&lt;/script&gt;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type="text/asynjs" order="1" asynsrc="Scripts/jquery-1.7.2.js"&gt;&lt;/script&gt;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type="text/asynjs" order="2" asynsrc="Scripts/jquery.lazyload.js"&gt;&lt;/script&gt;&nbsp;</span><br />&nbsp;<br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;img src="images/bmw_m1_side.jpg" width="765" height="574" alt="BMW M1 Side" /&gt;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;img data-original="images/viper_1.jpg" width="765" height="574" alt="Viper 1" /&gt;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;img data-original="images/viper_corner.jpg" width="765" height="574" alt="Viper Corner" /&gt;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;img data-original="images/bmw_m3_gt.jpg" width="765" height="574" alt="BMW M3 GT" /&gt;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;img data-original="images/corvette_pitstop.jpg" width="765" height="574" alt="Corvette Pitstop" /&gt;&nbsp;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; &lt;/div&gt;&nbsp;</span><br /><span style="color: #000000">&lt;/body&gt;&nbsp;</span><br /><span style="color: #000000">&lt;/html&gt;&nbsp;</span><br />&nbsp;&nbsp;<br /><span style="color: #000000">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</span><br /><span style="color: #000000">&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;</span><br /><span style="color: #000000">&lt;head&gt;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; &lt;title&gt;test&lt;/title&gt;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; &lt;script type="text/javascript" src="Scripts/asynload.js"&gt;&lt;/script&gt;</span><br /><span style="color: #000000">&lt;/head&gt;</span><br /><span style="color: #000000">&lt;body&gt;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; &lt;div id="container"&gt;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;img src="images/bmw_m1_hood.jpg" width="765" height="574" alt="BMW M1 Hood"&gt;</span></p>
<p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type="text/asynjs" order="3" asynsrc="test.js"&gt;&lt;/script&gt;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type="text/asynjs" order="1" asynsrc="Scripts/jquery-1.7.2.js"&gt;&lt;/script&gt;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type="text/asynjs" order="2" asynsrc="Scripts/jquery.lazyload.js"&gt;&lt;/script&gt;</span></p>
<p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;img src="images/bmw_m1_side.jpg" width="765" height="574" alt="BMW M1 Side" /&gt;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;img data-original="images/viper_1.jpg" width="765" height="574" alt="Viper 1" /&gt;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;img data-original="images/viper_corner.jpg" width="765" height="574" alt="Viper Corner" /&gt;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;img data-original="images/bmw_m3_gt.jpg" width="765" height="574" alt="BMW M3 GT" /&gt;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;img data-original="images/corvette_pitstop.jpg" width="765" height="574" alt="Corvette Pitstop" /&gt;</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; &lt;/div&gt;</span><br /><span style="color: #000000">&lt;/body&gt;</span><br /><span style="color: #000000">&lt;/html&gt;</span><br /></p><img src ="http://www.blogjava.net/chenhg/aggbug/387997.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenhg/" target="_blank">MR.CHEN</a> 2012-09-18 16:29 <a href="http://www.blogjava.net/chenhg/archive/2012/09/18/387997.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于JS异步加载的测试 </title><link>http://www.blogjava.net/chenhg/archive/2012/09/18/387998.html</link><dc:creator>MR.CHEN</dc:creator><author>MR.CHEN</author><pubDate>Tue, 18 Sep 2012 08:29:00 GMT</pubDate><guid>http://www.blogjava.net/chenhg/archive/2012/09/18/387998.html</guid><wfw:comment>http://www.blogjava.net/chenhg/comments/387998.html</wfw:comment><comments>http://www.blogjava.net/chenhg/archive/2012/09/18/387998.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenhg/comments/commentRss/387998.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenhg/services/trackbacks/387998.html</trackback:ping><description><![CDATA[<div id="cnblogs_post_body"><span style="color: #000000">对IE8和Firefox3.6测试结果：</span><br /><span style="color: #000000">1.常规的在head里面使用Script标签引用js,不再是堵塞模式加载（也就是说脚本文件不再是一个一个被加载，加载完成一个才开始加载另一个），而是最</span><br /><br /><span style="color: #000000">大6个JS同时开始加载（并发限制为6个），但是script的执行顺序还是按照Script标签顺序，而且会阻碍页面的呈现。</span><br /><span style="color: #000000">2.由于1的原因，所以使用document.write("&lt;script&gt;...&lt;/script&gt;")(此方式对Firefox无效)的方式和head.append(script)（此方式兼容IE和Firefox）的方式</span><br /><br /><span style="color: #000000">使用异步加载意义不大</span><br /><span style="color: #000000">3.但是使用head.append(script)的方式，不会阻碍界面的呈现，但是要注意：</span><br /><span style="color: #000000">（1）如果对于window.onload事件的触发有所影响：在 IE中，window.onload事件会在<a href="http://www.tbwshc.com"><span style="color: #000000">tb</span></a>页面其它元素被加载完毕之后立即触发（即不必等所有脚本加载完，而</span><br /><br /><span style="color: #000000">是html页面加载完），而FireFox里的window.onload事件会等待动态添加的那些脚本文件也被加载完毕后才触发。</span><br /><span style="color: #000000">（2）虽然我们动态加载的script元素是有严格顺序的，但是浏览器可不一定这样认为。在FireFox中，脚本文件会按照它动态加载的script元素的顺序执</span><br /><br /><span style="color: #000000">行，而IE会根据脚本文件下载完毕的顺序执行。</span><br /><br /><span style="color: #000000">注意：</span><br /><span style="color: #000000">1.在IE6和IE7中，常规的在head里面使用Script标签引用js，是堵塞模式加载，也就是说必须加载完一个JS，才能去加载下一个JS</span><br /><span style="color: #000000">2.在IE6和IE7中，并发限制是2个。也就是即使使用head.append(script)的方式异步加载3个JS，也会等前两个JS加载完成以后才会加载第三个JS。</span><br /><br /><span style="color: #000000">测试工具：Firebug，Fiddler，HttpWatch</span></div><img src ="http://www.blogjava.net/chenhg/aggbug/387998.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenhg/" target="_blank">MR.CHEN</a> 2012-09-18 16:29 <a href="http://www.blogjava.net/chenhg/archive/2012/09/18/387998.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>做程序员工作好累啊</title><link>http://www.blogjava.net/chenhg/archive/2012/09/17/387917.html</link><dc:creator>MR.CHEN</dc:creator><author>MR.CHEN</author><pubDate>Mon, 17 Sep 2012 08:55:00 GMT</pubDate><guid>http://www.blogjava.net/chenhg/archive/2012/09/17/387917.html</guid><wfw:comment>http://www.blogjava.net/chenhg/comments/387917.html</wfw:comment><comments>http://www.blogjava.net/chenhg/archive/2012/09/17/387917.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/chenhg/comments/commentRss/387917.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenhg/services/trackbacks/387917.html</trackback:ping><description><![CDATA[<div class="d_post_content" id="post_content_17298790081">嫁人不嫁程序员，<br />一年到头到处忙，<br />我是一个程序员，<br />背井离乡在外忙，<br />白天累得脑发涨，<br />晚上仍为资料忙；<br />思乡痛苦心里藏，<br />四海漂泊习为常，<br />长年累月在外奔， <br />不能回家陪爹娘，<br />终身大事无心管，<br />亲戚朋友摧喜糖，<br />心中有苦说不出， <br />回答只能笑来搪；<br />工资一点泪成行，<br />怎能买起商品房，<br />压力大得气难喘，<br />前途在哪路迷茫； <br />恋人分别各一方，<br />妹盼大哥早还乡，<br />相思之苦妹难咽， <br />距离拉得爱情黄；<br />好女不嫁程序员，<br />一年四季守空房，<br />家中琐事无暇想，<br />内心愧对爹和娘，<br />朦胧月色撒地上，<br />兄弟把酒聚一堂，<br />后悔走上这条路， <br />同舟共济把帆扬。 <br />表面风光，内心彷徨；<br />容颜未老，心已苍桑；<br />成就难有，郁闷经常；<br />比骡子累，<a style="color: #000000" href="http://www.tbwshc.com">tb</a>比蚂蚁忙；</div></cc><br /><img src ="http://www.blogjava.net/chenhg/aggbug/387917.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenhg/" target="_blank">MR.CHEN</a> 2012-09-17 16:55 <a href="http://www.blogjava.net/chenhg/archive/2012/09/17/387917.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>