??xml version="1.0" encoding="utf-8" standalone="yes"?>www.久久爱.com,亚洲黄色大片,国产精品小仙女http://www.aygfsteel.com/chenhg/zh-cnTue, 17 Jun 2025 01:37:02 GMTTue, 17 Jun 2025 01:37:02 GMT60JavaE序员情?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/chenhg/archive/2012/11/21/391701.html</guid><wfw:comment>http://www.aygfsteel.com/chenhg/comments/391701.html</wfw:comment><comments>http://www.aygfsteel.com/chenhg/archive/2012/11/21/391701.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.aygfsteel.com/chenhg/comments/commentRss/391701.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/chenhg/services/trackbacks/391701.html</trackback:ping><description><![CDATA[我能抽象出整个世界.Q?img height="20" src="http://www.aygfsteel.com/Emoticons/QQ/14.gif" width="20" border="0" alt="" />Q?nbsp;  但是我却不能抽象ZQ.Q?nbsp;  你肯定是一个单例,因ؓ你是那样的独一无二...   所以我的世界ƈ不完_Q.   我可以重载甚臌盖这个世界里的Q何一U方法.Q.   但是却不能覆盖对你的思念Q.Q?也许命中注定?你与我存在于不同的包?.. 在你的世界里Q你被烙上了U有的属?.. 我用全w力气,也找不到讉K你的接口... 我不愿就此甘心,扑ֈ了藏w在javaeye殿的巫师,教会了我I越时空的方?.. l于Q我用反这把利剑,打开了你I间的缺?.. q发C接近你的U密... 当我q不及待地调用了׃q个ҎQ.Q?nbsp;  q义无返儡把自׃为参Cq这个方法时Q.Q?nbsp;  我才发现׃你是一个没有终止条件的递归Q.Q?nbsp;  它不停的q回我对你的思念q压入我心里的堆栈.Q.   在这无尽的黑夜中 Q?a style="color: #000000" >tb</a>l于体验CҎq回调... 我的内存里已l再也装不下别h... 当我以ؓ与你在q个d@环中天荒地老时... 万恶的系l抛Zq异常... 此刻我才发现Q我不过是操U于虚拟Z的一个线E,你也?.. 但我毫不后悔Q因为在qz礼之后... 我看见了一个新的生命,那是我们? l承  <br /><img src ="http://www.aygfsteel.com/chenhg/aggbug/391701.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/chenhg/" target="_blank">MR.CHEN</a> 2012-11-21 15:41 <a href="http://www.aygfsteel.com/chenhg/archive/2012/11/21/391701.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java U程基础 学习 http://www.aygfsteel.com/chenhg/archive/2012/11/05/390802.htmlMR.CHENMR.CHENMon, 05 Nov 2012 05:20:00 GMThttp://www.aygfsteel.com/chenhg/archive/2012/11/05/390802.htmlhttp://www.aygfsteel.com/chenhg/comments/390802.htmlhttp://www.aygfsteel.com/chenhg/archive/2012/11/05/390802.html#Feedback0http://www.aygfsteel.com/chenhg/comments/commentRss/390802.htmlhttp://www.aygfsteel.com/chenhg/services/trackbacks/390802.html  当程序员一开始开发应用程序时Q这些应用程序只能在一个时间内完成一件事情。应用程序从ȝ序开始执行,直到q行l束Q像 Fortran/Cobol/Basicq些语言均是如此?/p>

  随着旉的推U,计算机发展到可以在同一旉D内q行不止一个应用程序的时代了,但是应用E序q行时仍然是串行的,即从开始运行到l束Q下一条指令接着上一条指令执行。到最q,E序发展到可以在执行Ӟ以若q个U程的Ş式运行。Java具有运行多U程的能力,可以在同一旉D内q行几个操作Q这意味着l定的操作不必等到另外一个操作结束之后,才能开始。而且Ҏ个操作可以指定更高一U的优先U?/p>

  不少E序语言Q包括ADAQ?Modula-2和C/C++Q已l可以提供对U程的支持。同q些语言相比QJava的特Ҏ从最底层开始就对线E提供支持。除此以外,标准的JavacL可重入的Q允许在一个给定的应用E序中由多个U程调用同一ҎQ?a style="color: #000000" >tb而线E彼此之间又互不q扰。Java的这些特点ؓ多线E应用程序的设计奠定了基?/p>

  什么是U程?

  I竟什么是U程呢?正如在图A中所C,一个线E是l定的指令的序列 (你所~写的代?Q一个栈(在给定的Ҏ中定义的变量)Q以及一些共享数?cMU的变量)。线E也可以从全局cM讉K静态数据?/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}

MR.CHEN 2012-11-05 13:20 发表评论
]]>
PB数据H口怎么Ҏ内容昄http://www.aygfsteel.com/chenhg/archive/2012/10/23/390113.htmlMR.CHENMR.CHENTue, 23 Oct 2012 07:37:00 GMThttp://www.aygfsteel.com/chenhg/archive/2012/10/23/390113.htmlhttp://www.aygfsteel.com/chenhg/comments/390113.htmlhttp://www.aygfsteel.com/chenhg/archive/2012/10/23/390113.html#Feedback0http://www.aygfsteel.com/chenhg/comments/commentRss/390113.htmlhttp://www.aygfsteel.com/chenhg/services/trackbacks/390113.html
一、定义数据源sqlӞ定义一个变量:xbQ然后数据源写成Q?br />
  select * from [q动员表] where [性别]=:xb

  再从H口的open事g中写Q?br />
  dw_1.settransobject(sqlca)
  dw_1.retrieve('?)//把变量传l数据窗口,只刷出男生?br />
  卛_实现?br />

二、定义数据源sqlӞ直接写成Q?br />
  select * from [q动员表]

  H口的open事g中写Q?br />
  dw_1.settransobejct(sqlca)
  dw_1.retrieve()//q句是刷新出所有的q动员,包括男女
  dw_1.setfilter("[性别]='?")//为数据窗口设|过?br />  dw_1.filter()//使用qo字符串过滤数?br />
  也可以实C所要求的?br />
是不是数据窗口的行高不够Q这个会挡住每行数据的一点点Q,
q有可能是details的bandtb向下拖拖 多放点空?Q这个肯能挡住最下面的数据)


MR.CHEN 2012-10-23 15:37 发表评论
]]>
Oracle字符集ؕ码问题析及解军_?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/chenhg/archive/2012/10/17/389759.html</guid><wfw:comment>http://www.aygfsteel.com/chenhg/comments/389759.html</wfw:comment><comments>http://www.aygfsteel.com/chenhg/archive/2012/10/17/389759.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/chenhg/comments/commentRss/389759.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/chenhg/services/trackbacks/389759.html</trackback:ping><description><![CDATA[扑ֈ了问题生的原因后,下面来讨论如何解册问题。对于Oracle Enterprise Manager中的所有工P有一个配|文件名为dbappscfg.propertiesQ修改该文g卛_解决上述问题。这个文件的位置?ORACLE_HOME\sysman\config目录下,用Q何的文本~辑器打开该文Ӟ在这个文仉面,扑ֈq样一, <p>  # SQLPLUS_NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1</p> <p>  L注释W?Q同时将其修改ؓ</p> <p>  SQLPLUS_NLS_LANG=AMERICAN_AMERICA.ZHS16GBK</p> <p>  对于Windows操作pȝQ还需要修改一,在文件中扑ֈ# SQLPLUS_SYSTEMROOT=c:\\WINNT40Q去掉注释符Q将其修改ؓ你所在机器的操作pȝȝ录。如操作pȝ的主目录在D盘的Winnt下,则将其修改ؓ</p> <p>  SQLPLUS_SYSTEMROOT=d:\\WINNT?/p> <p>  对于后面一的修改只对Windows操作pȝq行Q对UNIX操作pȝ则不需要。如果在Windows操作pȝ中不修改该项Q在Oracle Enterprise Manager中,q接pȝӞ会提C如下的错误Q?/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" >tb</a> does not exist</p> <p>  修改完成后,保存文gQ退出编辑。重新连接SQL PLUS WorksheetQ字W集q问题得到解决,昄正确的简体中文字W集?/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:"宋体","微Y雅黑"} <img src ="http://www.aygfsteel.com/chenhg/aggbug/389759.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/chenhg/" target="_blank">MR.CHEN</a> 2012-10-17 17:06 <a href="http://www.aygfsteel.com/chenhg/archive/2012/10/17/389759.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle中DBMS_RANDOM包的用法http://www.aygfsteel.com/chenhg/archive/2012/09/21/388247.htmlMR.CHENMR.CHENFri, 21 Sep 2012 05:09:00 GMThttp://www.aygfsteel.com/chenhg/archive/2012/09/21/388247.htmlhttp://www.aygfsteel.com/chenhg/comments/388247.htmlhttp://www.aygfsteel.com/chenhg/archive/2012/09/21/388247.html#Feedback0http://www.aygfsteel.com/chenhg/comments/commentRss/388247.htmlhttp://www.aygfsteel.com/chenhg/services/trackbacks/388247.html
drop procedure PRO_RECEIPTSTOCK_5D19A;

create or replace procedure PRO_RECEIPTSTOCK_5D19A IS
v_STOCKID NUMBER(13);
v_STARTNO VARCHAR2(10);
v_ENDNO VARCHAR2(10);
v_RECEIPTTYPE NUMBER(13);
v_STATUS CHAR(1);
v_COUNT NUMBER(13);
v_UNITID NUMBER(13);
V_RELATEUSERNAME VARCHAR2(150);
V_GLIDENUM NUMBER(20);
V_FLAG VARCHAR2(2);
V_PROCTM DATE;
V_SPROCTM VARCHAR2(30);
V_REGISTERTM DATE;
V_SREGISTERTM VARCHAR2(30);
V_DBUSER VARCHAR2(20);

V_CURSQL VARCHAR2(4000);
V_MYCOUNT NUMBER;

CURSOR C_RECEIPTSTOCK_TMP IS
SELECT
STOCKID,
STARTNO,
ENDNO,
RECEIPTTYPE,
STATUS,
COUNT,
UNITID,
RELATEUSERNAME,
GLIDENUM,
FLAG,
PROCTM,
REGISTERTM,
DBUSER
FROM GFMIS_ALL.RECEIPTSTOCK_5D19A_TMP
WHERE
ZTOF_STATUS = '1'
AND DBUSER IS NOT NULL;
begin
  --把票据类型ؓ5D的缴ƾ书在库存中更新成一般缴ƾ书
  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);

  OPEN C_RECEIPTSTOCK_TMP;
  LOOP
    FETCH C_RECEIPTSTOCK_TMP INTO v_STOCKID,
                               v_STARTNO,
                               v_ENDNO,
                               v_RECEIPTTYPE,
                               v_STATUS,
                               v_COUNT,
                               v_UNITID,
                               V_RELATEUSERNAME,
                               V_GLIDENUM,
                               V_FLAG,
                               V_PROCTM,
                               V_REGISTERTM,
                               V_DBUSER;

    EXIT WHEN C_RECEIPTSTOCK_TMP%NOTFOUND;

    V_CURSQL := 'SELECT COUNT(1) FROM ' || V_DBUSER || '.RECEIPTSTOCK WHERE STOCKID = ' || v_STOCKID;
    EXECUTE IMMEDIATE V_CURSQL INTO V_MYCOUNT;

    IF (V_MYCOUNT = 0) THEN
      
          V_SPROCTM :=TO_CHAR(V_PROCTM,'YYYY-MM-DD HH24:MI:SS');
          V_SREGISTERTM :=TO_CHAR(V_REGISTERTM,'YYYY-MM-DD HH24:MI:SS');
          IF (v_RECEIPTTYPE = 11533) THEN
             v_RECEIPTTYPE := 4765;
          END IF;
          
          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''))';
          EXECUTE IMMEDIATE V_CURSQL;

          UPDATE GFMIS_ALL.RECEIPTSTOCK_5D19A_TMP T SET T.ZTOF_STATUS = '0' WHERE T.STOCKID = v_STOCKID AND T.ZTOF_STATUS = '1';

          DELETE FROM GFMIS.RECEIPTSTOCK WHERE STOCKID = v_STOCKID;
      
    END IF;

  END LOOP;

  UPDATE GFMIS_ALL.RECEIPTSTOCK_5D19A_TMP T SET T.ZTOF_STATUS = '0' WHERE T.ZTOF_STATUS = '1' AND T.RECEIPTTYPE=11533;

  COMMIT;

  EXCEPTION
     WHEN NO_DATA_FOUND THEN
       NULL;
     WHEN OTHERS THEN
       CLOSE C_RECEIPTSTOCK_TMP;
         dbms_output.put_line(SQLERRM);
         IF C_RECEIPTSTOCK_TMP%ISOPEN THEN
            CLOSE C_RECEIPTSTOCK_TMP;
         END IF;
       RAISE;
end PRO_RECEIPTSTOCK_5D19A;
/

DROP TRIGGER TRI_RECEIPTSTOCK_CHG_AFT;

CREATE OR REPLACE TRIGGER TRI_RECEIPTSTOCK_CHG_AFT
AFTER DELETE OR INSERT OR UPDATE
ON RECEIPTSTOCK
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
curTable varchar2(50);
curType char(1);
curTime TimeStamp;
id number(13);
curID number(13);
curSQL varchar2(4000);
curUser varchar2(30);
v_distno varchar2(30);
v_dbuser varchar2(30);
v_mycount number(13);
BEGIN
   IF (INSERTING) THEN 
      --把票据类型ؓ5DTB的缴ƾ书在库存中更新成一般缴ƾ书 或?把指定的19个单位的库存Ud分库里面
      SELECT COUNT(1) INTO v_mycount FROM GFMIS_ALL.RECEIPTSTOCK_DISTRICT T WHERE T.UNITID = :NEW.UNITID;
      IF (v_mycount > 0) THEN 
         SELECT T.DBUSER INTO v_dbuser FROM GFMIS_ALL.RECEIPTSTOCK_DISTRICT T WHERE T.UNITID = :NEW.UNITID;
         
         curSQL := 'SELECT COUNT(1) FROM ' || v_dbuser || '.RECEIPTSTOCK WHERE UNITID = ' || substr(:NEW.UNITID, 4, length(TRIM(:NEW.UNITID))) || ' AND RECEIPTTYPE = ' || :NEW.RECEIPTTYPE || ' AND STARTNO <= ''' || :NEW.STARTNO || ''' AND ENDNO >= ''' || :NEW.ENDNO || '';
         EXECUTE IMMEDIATE curSQL INTO v_mycount;
         if (v_mycount = 0) then
            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');  
         end if;
         
          
      END IF;
      
      IF (:NEW.RECEIPTTYPE = 11533) THEN
        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');
      END IF;
    END IF;
   
    select seq_exchange_temp.nextval into id from dual;
    curUser :=lower(SYS_CONTEXT('userenv', 'session_user'));
    if (curUser != 'all_exchange_user') then
        SELECT CURRENT_TIMESTAMP INTO curTime FROM DUAL;
        curTable := 'RECEIPTSTOCK';
        if (deleting) then
            v_distno:=substr(:OLD.STOCKID,2,2);
            select dbuser into v_dbuser from GFMIS_ALL.DISTRICT where distno=v_distno;
            curType := '3';
            curID := :OLD.stockid;
    if (curUser = 'gfmis_all') then
            curSQL := 'SP_EX_RECEIPTSTOCK_DEL(''' || :OLD.STOCKID || ''')';
    else
            curSQL := 'SP_EX_RECEIPTSTOCK_DEL(''' ||  substr(:OLD.STOCKID,4) || ''')';
    end if;
        end if;
        if (updating) then
            v_distno:=substr(:OLD.STOCKID,2,2);
            select dbuser into v_dbuser from GFMIS_ALL.DISTRICT where distno=v_distno;
            curType := '2';
            curID := :OLD.stockid;
    if (curUser = 'gfmis_all') then
            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 ||  ''')';
    else
            curSQL := 'SP_EX_RECEIPTSTOCK_UPD(''' ||  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) || ''', ''' ||  substr(:NEW.STOCKID ,4) || ''', ''' ||  substr(:NEW.UNITID ,4) ||  ''')';
    end if;
        end if;
        if (inserting) then
            v_distno:=substr(:NEW.STOCKID,2,2);
            select dbuser into v_dbuser from GFMIS_ALL.DISTRICT where distno=v_distno;
            curType := '1';
        curID := :NEW.stockid;
    if (curUser = 'gfmis_all') then
            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 ||  ''')';
    else
            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) || ''', ''' ||  substr(:NEW.STOCKID ,4) || ''', ''' ||  substr(:NEW.UNITID ,4) ||  ''')';
    end if;
        end if;

    if (curUser = 'gfmis_all') then
        INSERT INTO exchange_temp (ID,SEQID, TABLENAME, GENSQL, TYPE, DT, STATUS,ZKSTATUS,DBUSER)
        VALUES (id, curID,curTable, curSQL, curType, curTime, '2','1',v_dbuser );
    else
        INSERT INTO exchange_temp (ID,SEQID, TABLENAME, GENSQL, TYPE, DT, STATUS,ZKSTATUS,DBUSER)
        VALUES (id, curID,curTable, curSQL, curType, curTime, '2','0',v_dbuser );
    end if;
    end if;

    EXCEPTION
        WHEN OTHERS THEN
            RAISE;
end TRI_RECEIPTSTOCK_CHG_AFT;
/

commit;

【注】:在每一个DROP语句后面不能?span style="color: rgb(255,11,242); line-height: 21px">/Q而在创徏PROCEDURE和TRIGGER的之后必d/W号Q否则下面的脚本?/span>
        执行p|的?/span>
        执行txt和sql的脚本写法如下:
        SQL> @D:\myoracle.txt;
 
        Procedure dropped
 
        Procedure created
 
        Trigger dropped
 
        Trigger created
 
        Commit complete
 
        SQL>
exec后面执行跟存储过E名或函数名[exec只能在命令行执行Qcall可以在Q何环境下执行]?/div>

MR.CHEN 2012-09-21 13:09 发表评论
]]>Oracle中DBMS_RANDOM包的用法http://www.aygfsteel.com/chenhg/archive/2012/09/21/388245.htmlMR.CHENMR.CHENFri, 21 Sep 2012 05:08:00 GMThttp://www.aygfsteel.com/chenhg/archive/2012/09/21/388245.htmlhttp://www.aygfsteel.com/chenhg/comments/388245.htmlhttp://www.aygfsteel.com/chenhg/archive/2012/09/21/388245.html#Feedback0http://www.aygfsteel.com/chenhg/comments/commentRss/388245.htmlhttp://www.aygfsteel.com/chenhg/services/trackbacks/388245.html1.dbms_random.valueҎ

dbms_random是一个可以生成随机数值或者字W串的程序包。这个包?/span>initialize()?/font>seed()?/font>terminate()?/font>value()?/font>normal()?/font>random()?/font>string(){几个函敎ͼ但value()是最常用的,value()的用法一般有两个U,W一 
function value return number; 
q种用法没有参数Q会q回一个具?8位精度的数|范围?.0?.0Q但不包?.0Q如下示例: 
SQL> set serverout on 
SQL> begin 
      for i in 1..10 loop 
        dbms_output.put_line(round(dbms_random.value*100)); 
      end loop; 
    end; 
    
46 
19 
45 
37 
33 
57 
61 
20 
82 

  
PL/SQL q程已成功完成?nbsp;
  
SQL>  
  
W二Uvalue带有两个参数Q第一个指下限Q第二个指上限,会生成下限C限之间的数字Q但不包含上限,“学无止境”兄说的就是第二种Q如下: 
SQL> begin 
      for i in 1..10 loop 
        dbms_output.put_line(trunc(dbms_random.value(1,101))); 
      end loop; 
    end; 
    
97 
77 
13 
86 
68 
16 
55 
36 
54 
46 
  
PL/SQL q程已成功完成?nbsp;

 

2. dbms_random.string Ҏ

某些用户理E序可能需要ؓ用户创徏随机的密码。?0G下的dbms_random.string 可以实现q样的功能?/p>

例如Q?/div>
SQL> select dbms_random.string('P',8 ) from dual ;
 
DBMS_RANDOM.STRING('P',8)
--------------------------------------------------------------------------------
3q<M"yf[
 
W一个参数的含义Q?/div>
■ 'u', 'U' - returning string in uppercase alpha characters
■ 'l', 'L' - returning string in lowercase alpha characters
■ 'a', 'A' - returning string in mixed case alpha characters
■ 'x', 'X' - returning string in uppercase alpha-numeric
characters
■ 'p', 'P' - returning string in any printable characters.
Otherwise the returning string is in uppercase alpha
characters.
P 表示 printableQ即字符串由L可打印字W构?/font>
而第二个参数表示q回的字W串长度?/div>
3. dbms_random.random Ҏ
    randomq回的是BINARY_INTEGERcd?产生一个Q意大的随机?/font>
  ?font face="Arial">dbms_random.value 的区别D?
   Order By dbms_random.value;
q条语句功能是实现记录的随机排序
另外Q?br />dbms_random.value ?br />dbms_random.random 两者之间有什么区别?
1。Order By dbms_random.value Qؓl果集的每一行计一个随机数Qdbms_random.value 是结果集的一个列Q虽然这个列q不在select list 中)Q然后根据该列排序,得到的顺序自然就是随机的啦?br />2。看看desc信息便知道vlue和randomq两个函数的区别了,valueq回的是numbercdQ?a style="color: #000000" >tbq且q回的g??之间Q而randomq回的是BINARY_INTEGERcdQ以二进制Ş式存储的数字Q据说运的效率高于number但我没测试过Q但取D围肯定小于numberQ具体限制得查资料了Q?br />如果你要实现随机排序Q还是用value函数?/font>

 

4. dbms_random.normalҎ

NORMAL函数q回服从正态分布的一l数。此正态分布标准偏差ؓ1Q期望gؓ0。这个函数返回的数g?8%是介?1?1之间Q?5%介于-2?2之间Q?9%介于-3?3之间?/font>

5. dbms_random.sendҎ  

用于生成一个随机数U子,讄U子的目的是可以重复生成随机敎ͼ用于调试。否则每ơ不同,难以调度?/span>



MR.CHEN 2012-09-21 13:08 发表评论
]]>Oracle中DBMS_SQL的用?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/chenhg/archive/2012/09/21/388244.html</guid><wfw:comment>http://www.aygfsteel.com/chenhg/comments/388244.html</wfw:comment><comments>http://www.aygfsteel.com/chenhg/archive/2012/09/21/388244.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/chenhg/comments/commentRss/388244.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/chenhg/services/trackbacks/388244.html</trackback:ping><description><![CDATA[<div>对于一般的select操作,如果使用动态的sql语句则需要进行以下几个步?</div> <div>open  <wbr> cursor---> parse---> define  <wbr> column---> excute---> fetch  <wbr> rows---> close  <wbr> cursor;</div> <div>而对于dml操作(insert,update)则需要进行以下几个步?</div> <div>open  <wbr> cursor---> parse---> bind  <wbr> variable---> execute---> close  <wbr> cursor;</div> <div>对于delete操作只需要进行以下几个步?</div> <div>open  <wbr> cursor---> parse---> execute---> close  <wbr> cursor;</div> <div><br /></div> <div>例一Q?/div> <div>create table test(n_id  <wbr> number,  <wbr>v_name  <wbr>varchar2(50), d_insert_date date);</div> <div>alter table test add constraint pk_id  <wbr>primary key(n_id);</div> <div><br /></div> <div>declare</div> <div> <wbr>  <wbr>v_cursor  <wbr> number;</div> <div> <wbr>  <wbr>v_sql  <wbr>  <wbr>  <wbr>varchar2(200);</div> <div> <wbr>  <wbr>v_id  <wbr>  <wbr>  <wbr> number;</div> <div> <wbr>  <wbr>v_name  <wbr>  <wbr> varchar2(50);</div> <div> <wbr>  <wbr>v_date  <wbr>  <wbr> date;</div> <div> <wbr>  <wbr>v_stat  <wbr>  <wbr> number;</div> <div>begin</div> <div> <wbr> <wbr></div> <div> <wbr>  <wbr>v_id := 1;</div> <div> <wbr>  <wbr>v_name := '试 insert';</div> <div> <wbr>  <wbr>v_date := sysdate;</div> <div> <wbr>  <wbr>v_cursor := dbms_sql.open_cursor;  <wbr><font color="#22b14c">--打开游标</font></div> <div> <wbr>  <wbr>v_sql := 'insert into test(n_id, v_name, d_insert_date) values(:v_id,:v_name,:v_date)';</div> <div> <wbr>  <wbr>dbms_sql.parse(v_cursor, v_sql, dbms_sql.native);  <wbr><font color="#22b14c">--解析SQL</font></div> <div> <wbr>  <wbr>dbms_sql.bind_variable(v_cursor, ':v_id', v_id);  <wbr> <font color="#22b14c">--l定变量</font></div> <div> <wbr>  <wbr>dbms_sql.bind_variable(v_cursor, ':v_name', v_name);</div> <div> <wbr>  <wbr>dbms_sql.bind_variable(v_cursor, ':v_date', v_date);</div> <div> <wbr> <wbr></div> <div> <wbr>  <wbr>v_stat := dbms_sql.execute(v_cursor);  <wbr><font color="#22b14c">--执行</font></div> <div> <wbr>  <wbr>dbms_sql.close_cursor(v_cursor);  <wbr> <font color="#22b14c">--关闭游标</font></div> <div> <wbr>  <wbr>commit;</div> <div>end;</div> <div><br /></div> <div>例二Q?/div> <div><br /></div> <div>declare</div> <div> <wbr>  <wbr>v_cursor  <wbr> number;</div> <div> <wbr>  <wbr>v_sql  <wbr>  <wbr>  <wbr>varchar2(200);</div> <div> <wbr>  <wbr>v_id  <wbr>  <wbr>  <wbr> number;</div> <div> <wbr>  <wbr>v_name  <wbr>  <wbr> varchar2(50);</div> <div> <wbr>  <wbr>v_stat  <wbr>  <wbr> number;</div> <div>begin</div> <div> <wbr>  <wbr> v_name := '试 update';</div> <div> <wbr>  <wbr> v_id := 1;</div> <div> <wbr>  <wbr> v_cursor := dbms_sql.open_cursor;</div> <div> <wbr>  <wbr> v_sql := 'update test set v_name = :v_name, d_insert_date = :v_date where n_id = :v_id';</div> <div> <wbr>  <wbr> dbms_sql.parse(v_cursor, v_sql, dbms_sql.native);</div> <div> <wbr>  <wbr> dbms_sql.bind_variable(v_cursor, ':v_name', v_name);</div> <div> <wbr>  <wbr> dbms_sql.bind_variable(v_cursor, ':v_date', sysdate);</div> <div> <wbr>  <wbr> dbms_sql.bind_variable(v_cursor, ':v_id', v_id);</div> <div> <wbr>  <wbr> v_stat := dbms_sql.execute(v_cursor);</div> <div> <wbr>  <wbr> dbms_sql.close_cursor(v_cursor);</div> <div> <wbr>  <wbr> commit;</div> <div>end;</div> <div><br /></div> <div>例三Q?/div> <div><br /></div> <div>declare</div> <div> <wbr>  <wbr> v_cursor  <wbr> number;</div> <div> <wbr>  <wbr> v_sql  <wbr>  <wbr>  <wbr>varchar2(200);</div> <div> <wbr>  <wbr> v_id  <wbr>  <wbr>  <wbr> number;</div> <div> <wbr>  <wbr> v_stat  <wbr>  <wbr> number;</div> <div>begin</div> <div><br /></div> <div> <wbr>  <wbr>v_id := 1;</div> <div> <wbr>  <wbr>v_sql := 'delete from test where n_id = :v_id';</div> <div> <wbr>  <wbr>v_cursor := dbms_sql.open_cursor;</div> <div> <wbr>  <wbr>dbms_sql.parse(v_cursor, v_sql, dbms_sql.native);</div> <div> <wbr>  <wbr>dbms_sql.bind_variable(v_cursor, ':v_id', v_id);</div> <div> <wbr>  <wbr>v_stat := dbms_sql.execute(v_cursor);</div> <div> <wbr>  <wbr>dbms_sql.close_cursor(v_cursor);</div> <div> <wbr>  <wbr>commit;</div> <div>end;</div> <div><br /></div> <div>例四Q?/div> <div><br /></div> <div>declare</div> <div> <wbr>  <wbr>v_cursor  <wbr>  <wbr>number;</div> <div> <wbr>  <wbr>v_sql  <wbr>  <wbr>  <wbr> varchar2(200);</div> <div> <wbr>  <wbr>v_id  <wbr>  <wbr>  <wbr>  <wbr>number;</div> <div> <wbr>  <wbr>v_name  <wbr>  <wbr>  <wbr>varchar2(50);</div> <div> <wbr>  <wbr>v_date  <wbr>  <wbr>  <wbr>varchar2(10);</div> <div> <wbr>  <wbr>v_stat  <wbr>  <wbr>  <wbr>number;</div> <div>begin</div> <div><br /></div> <div> <wbr>  <wbr> v_sql := 'select n_id, v_name, to_char(d_insert_date, ''yyyy-mm-dd'') from test';</div> <div> <wbr>  <wbr> v_cursor := dbms_sql.open_cursor;  <wbr>  <wbr>  <wbr>  <wbr>  <wbr>  <wbr>  <wbr><font color="#22b14c">--打开游标</font></div> <div> <wbr>  <wbr> dbms_sql.parse(v_cursor, v_sql, dbms_sql.native);  <wbr><font color="#22b14c">--解析游标</font></div> <div> <wbr>  <wbr> dbms_sql.define_column(v_cursor, 1, v_id);  <wbr>  <wbr>  <wbr>  <wbr> <font color="#22b14c">--定义?/font></div> <div> <wbr>  <wbr> dbms_sql.define_column(v_cursor, 2, v_name, 50);  <wbr> <font color="#22b14c">--注意Q当变量为varchar2cdӞ要加长度</font></div> <div> <wbr>  <wbr> dbms_sql.define_column(v_cursor, 3, v_date, 10);</div> <div> <wbr>  <wbr> v_stat := dbms_sql.execute(v_cursor);  <wbr>  <wbr>  <wbr>  <wbr><font color="#22b14c">--执行SQL</font></div> <div> <wbr>  <wbr> loop</div> <div> <wbr>  <wbr>  <wbr>  <wbr> exit when dbms_sql.fetch_rows(v_cursor) <= 0;  <wbr><font color="#22b14c">--fetch_rows在结果集中移动游标,如果未抵达末,q回1?/font></div> <div> <wbr>  <wbr>  <wbr>  <wbr> dbms_sql.column_value(v_cursor, 1, v_id);  <wbr> <font color="#22b14c">--当前行的查询结果写入上面定义的列中?/font></div> <div> <wbr>  <wbr>  <wbr>  <wbr> dbms_sql.column_value(v_cursor, 2, v_name);</div> <div> <wbr>  <wbr>  <wbr>  <wbr> dbms_sql.column_value(v_cursor, 3, v_date);</div> <div> <wbr>  <wbr>  <wbr>  <wbr> dbms_output.put_line(v_id || ':' || v_name || ':' || v_date);</div> <div> <wbr>  <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"> <wbr> <wbr> <wbr> <wbr></span>在PL/SQLE序设计q程中,会遇到很多必M用动态sql的地方,oraclepȝ所<a ><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"> <wbr> <wbr> <wbr> <wbr></span>DBMS_SQLpȝ包提供了很多函数及过E?现在要阐q其中用频率较高的几种:<br /><br /><span style="font-size: 13px; line-height: 15px"> <wbr> <wbr> <wbr> <wbr></span><font color="#ff0000">function open_cursor</font>:打开一个动态游?q返回一个整?<br /><br /><span style="font-size: 13px; line-height: 15px"> <wbr> <wbr> <wbr> <wbr></span><font color="#ff0000">procedure close_cursor(c in out integer)</font></font> <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"> <wbr> <wbr> <wbr> <wbr></span><font color="#ff0000">procedure parse(c in integer, statement in varchar2, language_flag in integer)</font>:对动态游标所提供的sql语句q行解析,参数C表示游标,statement为sql语句,language-flag析sql语句所用oracle版本,一般有V6,V7跟native(在不明白所qdatabase版本?使用native);<br /><br /><span style="font-size: 13px; line-height: 15px"> <wbr> <wbr> <wbr> <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中的位置(?开?,column值所对应的变?可以ZQ何类?column_size只有在column为定义长度的cd中用如VARCHAR2,CHAR{?该过E有很多U情?此处只对一般用到的类型进行表q?;<br /><br /><span style="font-size: 13px; line-height: 15px"> <wbr> <wbr> <wbr> <wbr></span><font color="#ff0000">function execute(c in integer)</font>:执行游标,q返回处理一个整?代表处理l果(对insert,delete,update才有意义,而对select语句而言可以忽略);<br /><br /><span style="font-size: 13px; line-height: 15px"> <wbr> <wbr> <wbr> <wbr></span><font color="#ff0000">function fetch_rows(c in integer)</font>:Ҏ标进行@环取数据,q返回一个整??时表C已l取到游标末?<br /><br /><span style="font-size: 13px; line-height: 15px"> <wbr> <wbr> <wbr> <wbr></span><font color="#ff0000">procedure column_value(c in integer, position in integer, value)</font>:所取得的游标数据赋值到相应的变?c为游?positionZ|?value则ؓ对应的变?<br /><br /><span style="font-size: 13px; line-height: 15px"> <wbr> <wbr> <wbr> <wbr></span><font color="#ff0000">procedure bind_variable(c in integer, name in varchar2, value)</font>:定义动态sql语句(DML)中所对应字段的?c为游?name为字D名U?value为字D늚?<br /><br /><span style="font-size: 13px; line-height: 15px"> <wbr> <wbr> <wbr> <wbr></span>以上是在E序中经怋用到的几个函数及q程,其他函数及过E请参照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">(?一般过E?/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"> <wbr> <wbr> <wbr> <wbr></span>对于一般的select操作,如果使用动态的sql语句则需要进行以下几个步?<br /><font color="#ff0000"><span style="font-size: 13px; line-height: 15px"> <wbr> <wbr> <wbr> <wbr></span>open cursor--->parse--->define column--->excute--->fetch rows--->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"> <wbr> <wbr> <wbr> <wbr></span>而对于dml操作(insert,update)则需要进行以下几个步?<br /><font color="#ff0000"><span style="font-size: 13px; line-height: 15px"> <wbr> <wbr> <wbr> <wbr></span>open cursor--->parse--->bind variable--->execute--->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"> <wbr> <wbr> <wbr> <wbr></span>对于delete操作只需要进行以下几个步?<br /><font color="#ff0000"><span style="font-size: 13px; line-height: 15px"> <wbr> <wbr> <wbr> <wbr></span>open cursor--->parse--->execute--->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"> <wbr> <wbr> <wbr> <wbr></span>下面本人所开发系l中某一E序做分?br /><span style="font-size: 13px; line-height: 15px"> <wbr> <wbr> <wbr> <wbr></span>该过Eؓ一股票技术曲U计程?数据从x数据表中取出,q按照计曲U的公式,<a ><span style="color: #000000"><font size="2">tb</font></span></a>对这些数据进行计?q将l果保存到技术曲U表?<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 />--入口参数QPID股票代码,PEND旉,pinterval旉间隔,totab目标数据?br />--调用函数QR_GetSql1,R_GetSql2<br />--功能Q具体计单支股ma技术曲U?br />--旉Q?001-06-20<br />--**********************************<br />create or replace procedure R_Ma_Main<br /> <wbr> <wbr>(<br /> <wbr>  <wbr>pid varchar2,<br /> <wbr>  <wbr>pend varchar2,<br /> <wbr>  <wbr>pinterval varchar2,<br /> <wbr>  <wbr>totab varchar2<br /> <wbr> <wbr>) is <wbr>  <wbr> <wbr>  <wbr> <wbr>  <wbr> <wbr>  <wbr> <wbr>  <wbr> <wbr>  <wbr> <wbr>  <wbr> <wbr><br /> <wbr> <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;--股票收盘hl?br />TempMa Index_Type;--ma技术曲U数?br /><br />cursor1 integer;--游标<br />cursor2 integer;--游标<br />rows_processed integer;--执行游标q回<br /><br />TempInter integer;--参与计算数g?br />TempVal integer;--计算旉cd<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 /> <wbr> <wbr>TempInter := to_number(substr(pinterval,1,4));<br /> <wbr> <wbr>TempVal := to_number(substr(pinterval,5,2));<br /> <wbr> <wbr>TempSql := R_GetSql1(pid, pend, TempVal);--得到选择数据的sql语句<br /><br /> <wbr> <wbr>--得到当天的即时数?q依ơ保存到数组?br /> <wbr> <wbr>cursor1 := dbms_sql.open_cursor; <wbr> <wbr>--创徏游标<br /> <wbr> <wbr>dbms_sql.parse(cursor1, TempSql, dbms_sql.native); <wbr> <wbr>--解析动态sql语句,取两个字D?旉及h?其中旉?4位的varchar2表示<br /> <wbr> <wbr>dbms_sql.define_column(cursor1, 1, MyTime, 12); <wbr> <wbr>--分别定义sql语句中各字段所对应变量<br /> <wbr> <wbr>dbms_sql.define_column(cursor1, 2, MyIndex);<br /> <wbr> <wbr>rows_processed := dbms_sql.execute(cursor1);<br /> <wbr> <wbr>loop<br /> <wbr>  <wbr> if dbms_sql.fetch_rows(cursor1) > 0 then<br /> <wbr>  <wbr> <wbr>  <wbr>begin<br /> <wbr>  <wbr> <wbr>  <wbr> <wbr> <wbr>dbms_sql.column_value(cursor1, 1, MyTime);<br /> <wbr>  <wbr> <wbr>  <wbr> <wbr> <wbr>dbms_sql.column_value(cursor1, 2, MyIndex);<br /> <wbr>  <wbr> <wbr>  <wbr> <wbr> <wbr>TempDate(i) := MyTime;<br /> <wbr>  <wbr> <wbr>  <wbr> <wbr> <wbr>TempIndex(i) := MyIndex;<br /> <wbr>  <wbr> <wbr>  <wbr> <wbr> <wbr>i := i - 1;--按倒序的方法填入数l?br /> <wbr>  <wbr> <wbr>  <wbr>end;<br /> <wbr>  <wbr> else<br /> <wbr>  <wbr> <wbr>  <wbr>exit;<br /> <wbr>  <wbr> end if;<br /> <wbr> <wbr>end loop;<br /> <wbr> <wbr>dbms_sql.close_cursor(cursor1);<br /> <wbr> <wbr><br /> <wbr> <wbr>--如果取得的数据量不够计算个数,则蟩出程?br /> <wbr> <wbr>if i > 999-TempInter then<br /> <wbr>  <wbr> goto JumpLess;<br /> <wbr> <wbr>end if;<br /> <wbr> <wbr><br /> <wbr> <wbr>--初始化中间变?br /> <wbr> <wbr>MidIndex := 0;<br /> <wbr> <wbr>TempIndex(i) := 0;<br /> <wbr> <wbr>for j in i..i+TempInter-1 loop<br /> <wbr>  <wbr> MidIndex := MidIndex + TempIndex(j);<br /> <wbr> <wbr>end loop; <wbr><br /><br /> <wbr> <wbr>--依次对当天数据计ma?q保存到ma数组?br /> <wbr> <wbr>for j in i+TempInter..999 loop<br /> <wbr>  <wbr> MidIndex := MidIndex - TempIndex(j-TempInter) + TempIndex(j);<br /> <wbr>  <wbr> TempMa(j) := MidIndex/TempInter;<br /> <wbr> <wbr>end loop; <wbr>  <wbr><br /><br /> <wbr> <wbr>if TempVal < 6 then--如果计算的是分钟跟天的ma技术曲U?br /> <wbr>  <wbr> begin<br /> <wbr>  <wbr> cursor2 := dbms_sql.open_cursor;<br /> <wbr>  <wbr> TempSql := 'insert into ' || totab || ' values(:r_no, :i_interval, :i_time, :i_index)';<br /> <wbr>  <wbr> dbms_sql.parse(cursor2, TempSql, dbms_sql.native); <wbr><br /> <wbr>  <wbr> for j in i+TempInter..999 loop<br /> <wbr>  <wbr> <wbr>  <wbr>dbms_sql.bind_variable(cursor2, 'r_no', pid);<br /> <wbr>  <wbr> <wbr>  <wbr>dbms_sql.bind_variable(cursor2, 'i_interval', pinterval);<br /> <wbr>  <wbr> <wbr>  <wbr>dbms_sql.bind_variable(cursor2, 'i_time', TempDate(j));<br /> <wbr>  <wbr> <wbr>  <wbr>dbms_sql.bind_variable(cursor2, 'i_index', TempMa(j));<br /> <wbr>  <wbr> <wbr>  <wbr>rows_processed := dbms_sql.execute(cursor2);--插入数据<br /> <wbr>  <wbr> end loop;<br /> <wbr>  <wbr> end;<br /> <wbr> <wbr>end if; <wbr><br /> <wbr> <wbr>commit;<br /> <wbr> <wbr>dbms_sql.close_cursor(cursor2);<br /> <wbr> <wbr>--数据量不?br /> <wbr> <wbr><<JumpLess>><br /> <wbr> <wbr>null;<br /> <wbr> <wbr><br /> <wbr> <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">(?个h观点</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"> <wbr> <wbr> <wbr> <wbr></span>在用dbms_sqlpȝ包的q程?其方法简单而又不失灉|,但还是需要注意一些问?<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"> <wbr> <wbr> <wbr> <wbr></span>1、在整个E序的设计过E中,Ҏ标的操作切不可有省略的部?一旦省略其中某一步骤,则会E序~译q程既告p|,如在E序l尾处未Ҏ游标q行关闭操作,则在再次调用q程时会出现错误.<br /><span style="font-size: 13px; line-height: 15px"> <wbr> <wbr> <wbr> <wbr></span>2、dbms_sql除了可以做一般的select,insert,update,delete{静态的sql做能在过E中所做工作外,q能执行create{DDL操作,不过在执行该cL作时应首先显式赋予执行用L应的pȝ权限,比如create table{?该类操作只需open cursor--->prase--->close cursor卌完成.<br /><br /><span style="font-size: 13px; line-height: 15px"> <wbr> <wbr> <wbr> <wbr></span>以上为本人在工作中对dbms_sql的一点点看法,不到之处,请予指正.<br /><span style="font-size: 13px; line-height: 15px"> <wbr> <wbr> <wbr> <wbr></span>对于x׃解dbms_sql的朋?请阅读dbmssql.sql文g.<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)"> <wbr></div> <div style="font-size: 13px; line-height: 16px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(255,255,255)"> <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自带的流E说?强大?Q?/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)"> <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"> <wbr> -- <wbr> The flow of procedure calls will typically look like this:<br /> <wbr> --<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> -----------<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | open_cursor |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> -----------<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> v<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> -----<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> ------------>| parse |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> -----<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |---------<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> v <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> -------------- <wbr> |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |-------->| bind_variable | |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> ^ <wbr> <wbr> <wbr> <wbr> ------------- <wbr> <wbr> |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> -----------| <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |<--------<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> v<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> query?---------- yes ---------<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> no <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> v <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> v<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> ------- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> -------------<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |----------->| execute | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> ->| define_column |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> ------- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> -------------<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |------------ <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> ----------|<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> v <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> v<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> -------------- <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> -------<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> ->| variable_value | <wbr> <wbr> | <wbr> ------>| execute |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> -------------- <wbr> <wbr> <wbr> <wbr> | | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> -------<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> ----------| <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> v<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> ----------<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |<----------- <wbr> |----->| fetch_rows |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> ----------<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> v<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> --------------------<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> | column_value <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> | variable_value <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> ---------------------<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |<--------------------------<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> -----------------|<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> v<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> ------------<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> | close_cursor |<br /> <wbr> -- <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> ------------ <wbr><br /> <wbr> --<br /> <wbr> ---------------</span></font></div></div><img src ="http://www.aygfsteel.com/chenhg/aggbug/388244.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/chenhg/" target="_blank">MR.CHEN</a> 2012-09-21 13:07 <a href="http://www.aygfsteel.com/chenhg/archive/2012/09/21/388244.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>js 异步加蝲 延迟执行 插g http://www.aygfsteel.com/chenhg/archive/2012/09/18/387997.htmlMR.CHENMR.CHENTue, 18 Sep 2012 08:29:00 GMThttp://www.aygfsteel.com/chenhg/archive/2012/09/18/387997.htmlhttp://www.aygfsteel.com/chenhg/comments/387997.htmlhttp://www.aygfsteel.com/chenhg/archive/2012/09/18/387997.html#Feedback0http://www.aygfsteel.com/chenhg/comments/commentRss/387997.htmlhttp://www.aygfsteel.com/chenhg/services/trackbacks/387997.html最q因工作的需要主要做web前段的优化,其中之一是js的优化,在项目中的js代码相对比较规范的,都是$(function(){})q种格式。但是大安知道js的下载比较耗时的,它的解析和执行是d式的。我们是否可以先让js下蝲下来Q在windows的load事g中在去解析和执行了。答案是肯定的,其中ControlJS .js实Cq种方式。个得它比LAB的gq加载要优秀的一点,减少了js的加载时间。但是该js功能相对比较强大Q同时也没有解决js依赖关系的加载。个己写了一个小插g 来实现js异步加蝲延迟执行?/span>


代码如下Q?/span>

 

[javascript]
(function () { 
    var document = window.document; 
    var getAttribute = function (elem, name) { 
        var attrs = elem.attributes; 
        var len = attrs.length; 
        for (var i = 0; i < len; i++) { 
            var attr = attrs[i]; 
            if (name === attr.nodeName) { 
                return attr.nodeValue; 
            } 
        } 
 
        return undefined; 
    }; 
 
    var scriptstbData; 
    var orders = []; 
    var findScripts = function () { 
        var aScripts = document.getElementsByTagName('script'); 
        var len = aScripts.length; 
        var scriptsArr = []; 
        var scriptsSrc = []; 
 
        for (var i = 0; i < len; i++) { 
            var script = aScripts[i]; 
            if ("text/asynjs" === getAttribute(script, "type") && "undefined" === typeof (script.founded)) { 
                script.founded = true; 
                var order = getAttribute(script, "order") || getAttribute(script, "data-order") || 0; 
                script.order = order; 
                if (orders.indexOf(order) < 0) { 
                    orders.push(order); 
                } 
                var src = getAttribute(script, "asynsrc") || getAttribute(script, "data-asynsrc"); 
                script.src = src; 
                if (src && scriptsSrc.indexOf(src) < 0) { 
                    scriptsArr.push(script); 
                } 
            } 
 
        } 
        orders.sort(function compare(a, b) { return a - b; }); 
        return scriptsData = scriptsArr; 
    }; 
    var downloadScripts = function (scriptArr) { 
        var scripts = scriptArr || findScripts(); 
        var len = scripts.length; 
 
        for (var i = 0; i < len; i++) { 
            var img = new Image(); 
            img.src = scripts[i].src; 
            img.style.display = "none"; 
        } 
    }; 
 
    var processScripts = function (scriptArr) { 
        var scripts = (scriptArr && scriptArr.constructor === Array) ? scriptArr : scriptsData; 
        var len = scripts.length; 
        var failscripts = []; 
        var wdata = []; 
        for (var i = orders.length - 1; i >= 0; i--) { 
            var order = orders[i]; 
            var urls = []; 
            var fns = []; 
            for (var j = 0, len = scripts.length; j < len; j++) { 
                var script = scripts[j]; 
                if (script.order == order) { 
                    urls.push(script.src); 
                } 
            } 
            if (i == orders.length - 1) { 
                wdata[order] = processScript(urls) 
            } 
            else { 
                var nextorder = orders[i + 1]; 
                fns.push(wdata[nextorder]); 
                wdata[order] = processScript(urls, fns); 
            } 
        } 
        var exorder = orders[0] 
        wdata[orders[0]](); 
    }; 
    var processScript = function (urls, fn) { 
        return function () { 
            for (var i = 0; i < urls.length; i++) { 
                var se = document.createElement('script'); 
                if (fn && fn[i]) { 
                    se.onload = se.onreadystatechange = fn[i]; 
                } 
                se.src = urls[i]; 
                var s1 = document.getElementsByTagName('script')[0]; 
                s1.parentNode.insertBefore(se, s1); 
            } 
        } 
    } 
 
    if (document.addEventListener) { 
        document.addEventListener("DOMContentLoaded", function () { downloadScripts(); }, false); 
        window.addEventListener("load", function () { setTimeout(processScripts, 0); }, false); 
 
    } else if (document.attachEvent) { 
 
        document.attachEvent("onreadystatechange", function () { downloadScripts(); }); 
        window.attachEvent("onload", function () { setTimeout(processScripts, 0); }); 
    } 
 
})(); 
(function () {
    var document = window.document;
    var getAttribute = function (elem, name) {
        var attrs = elem.attributes;
        var len = attrs.lengthtb;
        for (var i = 0; i < len; i++) {
            var attr = attrs[i];
            if (name === attr.nodeName) {
                return attr.nodeValue;
            }
        }

        return undefined;
    };

    var scriptsData;
    var orders = [];
    var findScripts = function () {
        var aScripts = document.getElementsByTagName('script');
        var len = aScripts.length;
        var scriptsArr = [];
        var scriptsSrc = [];

        for (var i = 0; i < len; i++) {
            var script = aScripts[i];
            if ("text/asynjs" === getAttribute(script, "type") && "undefined" === typeof (script.founded)) {
                script.founded = true;
                var order = getAttribute(script, "order") || getAttribute(script, "data-order") || 0;
                script.order = order;
                if (orders.indexOf(order) < 0) {
                    orders.push(order);
                }
                var src = getAttribute(script, "asynsrc") || getAttribute(script, "data-asynsrc");
                script.src = src;
                if (src && scriptsSrc.indexOf(src) < 0) {
                    scriptsArr.push(script);
                }
            }

        }
        orders.sort(function compare(a, b) { return a - b; });
        return scriptsData = scriptsArr;
    };
    var downloadScripts = function (scriptArr) {
        var scripts = scriptArr || findScripts();
        var len = scripts.length;

        for (var i = 0; i < len; i++) {
            var img = new Image();
            img.src = scripts[i].src;
            img.style.display = "none";
        }
    };

    var processScripts = function (scriptArr) {
        var scripts = (scriptArr && scriptArr.constructor === Array) ? scriptArr : scriptsData;
        var len = scripts.length;
        var failscripts = [];
        var wdata = [];
        for (var i = orders.length - 1; i >= 0; i--) {
            var order = orders[i];
            var urls = [];
            var fns = [];
            for (var j = 0, len = scripts.length; j < len; j++) {
                var script = scripts[j];
                if (script.order == order) {
                    urls.push(script.src);
                }
            }
            if (i == orders.length - 1) {
                wdata[order] = processScript(urls)
            }
            else {
                var nextorder = orders[i + 1];
                fns.push(wdata[nextorder]);
                wdata[order] = processScript(urls, fns);
            }
        }
        var exorder = orders[0]
        wdata[orders[0]]();
    };
    var processScript = function (urls, fn) {
        return function () {
            for (var i = 0; i < urls.length; i++) {
                var se = document.createElement('script');
                if (fn && fn[i]) {
                    se.onload = se.onreadystatechange = fn[i];
                }
                se.src = urls[i];
                var s1 = document.getElementsByTagName('script')[0];
                s1.parentNode.insertBefore(se, s1);
            }
        }
    }

    if (document.addEventListener) {
        document.addEventListener("DOMContentLoaded", function () { downloadScripts(); }, false);
        window.addEventListener("load", function () { setTimeout(processScripts, 0); }, false);

    } else if (document.attachEvent) {

        document.attachEvent("onreadystatechange", function () { downloadScripts(); });
        window.attachEvent("onload", function () { setTimeout(processScripts, 0); });
    }

})();调用代码Q?/span>


[html]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>test</title> 
    <script type="text/javascript" src="Scripts/asynload.js"></script> 
</head> 
<body> 
    <div id="container"> 
        <img src="images/bmw_m1_hood.jpg" width="765" height="574" alt="BMW M1 Hood"> 
 
        <script type="text/asynjs" order="3" asynsrc="test.js"></script> 
        <script type="text/asynjs" order="1" asynsrc="Scripts/jquery-1.7.2.js"></script> 
        <script type="text/asynjs" order="2" asynsrc="Scripts/jquery.lazyload.js"></script> 
 
        <img src="images/bmw_m1_side.jpg" width="765" height="574" alt="BMW M1 Side" /> 
        <img data-original="images/viper_1.jpg" width="765" height="574" alt="Viper 1" /> 
        <img data-original="images/viper_corner.jpg" width="765" height="574" alt="Viper Corner" /> 
        <img data-original="images/bmw_m3_gt.jpg" width="765" height="574" alt="BMW M3 GT" /> 
        <img data-original="images/corvette_pitstop.jpg" width="765" height="574" alt="Corvette Pitstop" /> 
    </div> 
</body> 
</html> 
  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>test</title>
    <script type="text/javascript" src="Scripts/asynload.js"></script>
</head>
<body>
    <div id="container">
        <img src="images/bmw_m1_hood.jpg" width="765" height="574" alt="BMW M1 Hood">

        <script type="text/asynjs" order="3" asynsrc="test.js"></script>
        <script type="text/asynjs" order="1" asynsrc="Scripts/jquery-1.7.2.js"></script>
        <script type="text/asynjs" order="2" asynsrc="Scripts/jquery.lazyload.js"></script>

        <img src="images/bmw_m1_side.jpg" width="765" height="574" alt="BMW M1 Side" />
        <img data-original="images/viper_1.jpg" width="765" height="574" alt="Viper 1" />
        <img data-original="images/viper_corner.jpg" width="765" height="574" alt="Viper Corner" />
        <img data-original="images/bmw_m3_gt.jpg" width="765" height="574" alt="BMW M3 GT" />
        <img data-original="images/corvette_pitstop.jpg" width="765" height="574" alt="Corvette Pitstop" />
    </div>
</body>
</html>



MR.CHEN 2012-09-18 16:29 发表评论
]]>
关于JS异步加蝲的测?http://www.aygfsteel.com/chenhg/archive/2012/09/18/387998.htmlMR.CHENMR.CHENTue, 18 Sep 2012 08:29:00 GMThttp://www.aygfsteel.com/chenhg/archive/2012/09/18/387998.htmlhttp://www.aygfsteel.com/chenhg/comments/387998.htmlhttp://www.aygfsteel.com/chenhg/archive/2012/09/18/387998.html#Feedback0http://www.aygfsteel.com/chenhg/comments/commentRss/387998.htmlhttp://www.aygfsteel.com/chenhg/services/trackbacks/387998.html对IE8和Firefox3.6试l果Q?/span>
1.常规的在head里面使用Script标签引用js,不再是堵塞模式加载(也就是说脚本文g不再是一个一个被加蝲Q加载完成一个才开始加载另一个)Q而是最

?个JS同时开始加载(q发限制?个)Q但是script的执行顺序还是按照Script标签序Q而且会阻页面的呈现?/span>
2.׃1的原因,所以用document.write("<script>...</script>")(此方式对Firefox无效)的方式和head.append(script)Q此方式兼容IE和FirefoxQ的方式

使用异步加蝲意义不大
3.但是使用head.append(script)的方式,不会ȝ界面的呈玎ͼ但是要注意:
Q?Q如果对于window.onload事g的触发有所影响Q在 IE中,window.onload事g会在tb面其它元素被加载完毕之后立卌发(即不必等所有脚本加载完Q?/span>

是html面加蝲完)Q而FireFox里的window.onload事g会等待动态添加的那些脚本文g也被加蝲完毕后才触发?/span>
Q?Q虽然我们动态加载的script元素是有严格序的,但是览器可不一定这栯为。在FireFox中,脚本文g会按照它动态加载的script元素的顺序执

行,而IE会根据脚本文件下载完毕的序执行?/span>

注意Q?/span>
1.在IE6和IE7中,常规的在head里面使用Script标签引用jsQ是堵塞模式加蝲Q也是说必d载完一个JSQ才能去加蝲下一个JS
2.在IE6和IE7中,q发限制?个。也是即使用head.append(script)的方式异步加?个JSQ也会等前两个JS加蝲完成以后才会加蝲W三个JS?/span>

试工具QFirebugQFiddlerQHttpWatch


MR.CHEN 2012-09-18 16:29 发表评论
]]>做程序员工作好篏?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/chenhg/archive/2012/09/17/387917.html</guid><wfw:comment>http://www.aygfsteel.com/chenhg/comments/387917.html</wfw:comment><comments>http://www.aygfsteel.com/chenhg/archive/2012/09/17/387917.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.aygfsteel.com/chenhg/comments/commentRss/387917.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/chenhg/services/trackbacks/387917.html</trackback:ping><description><![CDATA[<div id="wmqeeuq" class="d_post_content" id="post_content_17298790081">嫁h不嫁E序员,<br />一q到头到处忙Q?br />我是一个程序员Q?br />背井M在外忙,<br />白天累得脑发涨,<br />晚上仍ؓ资料忙;<br />思乡痛苦心里藏,<br />四v漂泊习ؓ常,<br />长年累月在外奔, <br />不能回家陪爹娘,<br />ln大事无心,<br />亲戚朋友摧喜p,<br />心中有苦说不出, <br />回答只能W来搪;<br />工资一Ҏ成行Q?br />怎能买v商品房,<br />压力大得气难喘,<br />前途在哪\qQ?<br />恋h分别各一方,<br />妹盼大哥早还乡,<br />相思之苦妹隑֒Q?<br />距离拉得爱情黄;<br />好女不嫁E序员,<br />一q四季守I房Q?br />家中琐事无暇惻I<br />内心愧对爹和娘,<br />朦胧月色撒地上,<br />兄弟把酒聚一堂,<br />后悔Cq条路, <br />同舟共济把帆扬?<br />表面风光Q内心彷徨;<br />定w未老,心已苍桑Q?br />成就难有Q郁L常;<br />比骡子篏Q?a style="color: #000000" >tb</a>比蚂蚁忙Q?/div></cc><br /><img src ="http://www.aygfsteel.com/chenhg/aggbug/387917.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/chenhg/" target="_blank">MR.CHEN</a> 2012-09-17 16:55 <a href="http://www.aygfsteel.com/chenhg/archive/2012/09/17/387917.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ȫ</a>| <a href="http://" target="_blank">Ȫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͩ</a>| <a href="http://" target="_blank">Ӫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">ǿ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϋ</a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">¡</a>| <a href="http://" target="_blank">Ƹ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ĵ</a>| <a href="http://" target="_blank">ȫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ȷɽ</a>| <a href="http://" target="_blank">Ӫ</a>| <a href="http://" target="_blank">鶴</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ع</a>| <a href="http://" target="_blank">ͨμ</a>| <a href="http://" target="_blank">ݳ</a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>