<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    斷點

    每天進步一點點!
    posts - 174, comments - 56, trackbacks - 0, articles - 21

    --情況1:多個參數的傳遞,由于多個文件編碼不一致,可能出現亂碼。

    window.open(base+"/policy/universal/pop/flat_vhl_inf_query.jsp?

    cLcnNo="+objPlateNo.value+"&cEngNo="+objEngNo.value+"&cVhlFrm="+objFrmNo.value+"&cPlateTy

    p="+objPlateTyp+"&cProdNo="+objCProdNo+"&cDptCde="+objCDptCde+"&cNewMrk="+objNewMrk.value

    +"&cEcdemicMrk="+objEcdemicMrk.value,"","scrollbars=yes,left=100,top=150,Toolbar=no,Locat

    ion=no,Direction=no,Resizeable=no,Width="+800+" ,Height="+400);


    --相應的jsp獲得參數
    <% 
     String CProdNo = request.getParameter("prodNo");
     String CDptCde = request.getParameter("dptCde");

     String CPlateNo = request.getParameter("plateNo");

     String CFrmNo = request.getParameter("frmNo");
     
     if("".equals(CPlateNo)&&"".equals(CFrmNo)){
      return;
     }
         
     String dwName = "policy.pub.flat_vhl_inf_DW";
    %>


    --情況2:解決亂碼的問題。
    function tool_uploadFile(clmNo,billType,maxFileNum,fileType,singleLimit,totalLimit) {//解決亂碼的問題,增加變量paramObj。ztf 10.06.01
     var paramObj = {
      "clmNo" : clmNo,
      "billType" : billType,
      "maxFileNum" : maxFileNum,
      "fileType" : fileType,
      "singleLimit" : singleLimit,
      "totalLimit" : totalLimit
     };
     var r = window.showModalDialog(global.WEB_APP_NAME+"/core/jsp/common/uploadFile.jsp",paramObj,"dialogHeight:610px;dialogWidth:530px;center:1;help: 0; status: 0;");

     return r;
    }

    --在相應的jsp頁面通過js獲得參數:
    <html>
      <head>
        <title>文件上傳</title>
      </head>
      <script type="text/javascript" src="<%=webApp%>/core/js/core/Tool.js"></script>
      <body bgcolor="#85b7ec">
     
      <script>
     var paramObj = window.dialogArguments;
     var clmNo = paramObj.clmNo;
     var billType = paramObj.billType;
     var maxFileNum = paramObj.maxFileNum;
     var fileType = paramObj.fileType;
     var singleLimit = paramObj.singleLimit;
     var totalLimit = paramObj.totalLimit;
     tool.loadApplet('<%=agentIp%>','<%=agentPort%>','<%=orgId%
    >',clmNo,billType,maxFileNum,fileType,singleLimit,totalLimit);
      </script>

    </body>
    </html>


    vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures])

    posted @ 2010-07-24 16:57 斷點 閱讀(339) | 評論 (0)編輯 收藏

    1、具體業務中用到的sql,這個是查找最近標志為1,且有多條記錄的數據。 (這個sql查找錯誤比較有用。)
    select a.c_ply_no ,count(1) from web_ply_base a
    where  a.c_latest_mrk='1'
    group by  a.c_ply_no
    having count(1)>1

     

    背景count(*)   count(1)   兩者比較,主要還是要count(1)所相對應的數據字段:
     
    如果你的數據表沒有主鍵,那么count(1)比count(*)快  
      如果有主鍵的話,那主鍵(聯合主鍵)作為count的條件也比count(*)要快  
      如果你的表只有一個字段的話那count(*)就是最快的啦
      如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。  
      因為count(*),自動會優化指定到那一個字段。所以沒必要去count(?),用count(*),sql會幫你完成
    優化的.
    其他語句:select * from 表名 where 條件 order by 字段名 asc\desc     // asc 升序    desc  降序

    2、C_Nme_En匹配多個 like 查詢。
    select distinct C_Spec_No
      from WEB_Prd_Fix_Spec
     WHERE C_Spec_No in (SELECT C_Spec_No
                           FROM web_Prd_Prod_Spec_Rel
                          WHERE C_Prod_No = '0326'
                            and C_Spec_No like '89%')
       and (C_Nme_En like '%000000%' or C_Nme_En like '%030006%' or
           C_Nme_En like '%030061%')

    posted @ 2010-07-24 16:42 斷點 閱讀(282) | 評論 (0)編輯 收藏

    --遞歸,樹狀結構的存儲與展示
    drop table article;
    create table article
    (
    id number primary key,
    count varchar2(4000),
    pid number,
    isleaf number(1), --0 代表非葉子節點,1代表葉子節點
    alevel number(2)
    );

    insert into article values(1,'螞蟻大戰大象',0,0,0);
    insert into article values(2,'大象被打趴下',1,0,1);
    insert into article values(3,'螞蟻也不好過',2,1,2);
    insert into article values(4,'瞎說',2,0,2);
    insert into article values(5,'沒有瞎說',4,1,3);
    insert into article values(6,'怎么可能',1,0,1);
    insert into article values(7,'怎么沒有可能',6,1,2);
    insert into article values(8,'可能性是很大的',6,1,2);
    insert into article values(9,'大象進醫院了',2,0,2);
    insert into article values(10,'護士是螞蟻',9,1,3);
    commit;

    螞蟻大戰大象
        大象被打趴下了
            螞蟻也不好過
            瞎說
                沒有瞎說
            大象進醫院了
                護士是螞蟻
        怎么可能
            怎么沒有可能
            可能性是很大的
     

    --用存儲過程展現樹狀結構。
    create or replace procedure p(v_pid article.pid%type,v_level binary_integer) is
      cursor c is select * from article where pid = v_pid;
      v_preStr varchar2(1024) := '';
    begin
      for i in 0..v_level loop
        v_preStr := v_preStr || '****';
      end loop;

      for v_article in c loop
        dbms_output.put_line(v_preStr ||v_article.cont);
        if(v_article.isleaf=0) then
           p(v_artile.id,v_levle +1);
        end if;
      end loop;
    end;

    posted @ 2010-07-24 16:25 斷點 閱讀(260) | 評論 (0)編輯 收藏

    --觸發器
    create table emp2_log
    (
    uname varchar2(20);
    action varchar2(10);
    atime date
    );

    create or replace trigger trig
      after insert or delete or update on emp2 for each row
    begin
      if inserting then
         insert into emp2_log values (USER,'insert',sysdate); --USER關鍵字,用戶。
      elsif updating then
         insert into emp2_log values (USER,'update',sysdate);
      elsif deleting then
         insert into emp2_log values (USER,'delete',sysdate);
      end if;
    end;

    update emp2 set sal = sal*2 where deptno = 30;
    select * from emp2_log;

    drop trigger trig;

    --直接執行時,出現違反完整約束條件,已找到子記錄。
    update dept set deptno = 99 where deptno = 10;

    --使用下面的,把子表一起更新。
    create or replace trigger trig
      after update on dept for each row
    begin
      update emp set deptno =:NEW.deptno where deptno =:OLD.deptno;
    end;

    update dept set deptno = 99 where deptno = 10;

    select * from emp;
    rollback;

    posted @ 2010-07-24 16:22 斷點 閱讀(295) | 評論 (0)編輯 收藏

    --函數
    create or replace function sal_tax
       (v_sal number)
       return number
    is
    begin
      if(v_sal < 2000) then
        return 0.10;
      elsif(v_sal < 2750) then
        return 0.15;
      else
        return 0.20;
      end if;
    end;

    數據庫定義的函數money_to_chinese ,把數字轉換正中文輸出。
    create or replace function money_to_chinese(money in VARCHAR2)
       return varchar2 is
         c_money   VARCHAR2(12);
         m_string VARCHAR2(60) := '分角圓拾佰仟萬拾佰仟億';
         n_string VARCHAR2(40) := '壹貳叁肆伍陸柒捌玖';
         b_string VARCHAR2(80);
         n         CHAR;
         len       NUMBER(3);
         i         NUMBER(3);
         tmp       NUMBER(12);
         is_zero   BOOLEAN;
         z_count   NUMBER(3);
         l_money   NUMBER;
         l_sign    VARCHAR2(10);

       BEGIN
         l_money := abs(money);
         IF money < 0 THEN
           l_sign := '負' ;
         ELSE
           l_sign := '';
         END IF;
         tmp      := round(l_money, 2) * 100;
         c_money := rtrim(ltrim(to_char(tmp, '999999999999')));
         len      := length(c_money);
         is_zero := TRUE;
         z_count := 0;
         i        := 0;
         WHILE i < len LOOP
           i := i + 1;
           n := substr(c_money, i, 1);
           IF n = '0' THEN
             IF len - i = 6 OR len - i = 2 OR len = i THEN
               IF is_zero THEN
                 b_string := substr(b_string, 1, length(b_string) - 1);
                 is_zero   := FALSE;
               END IF;
               IF len - i = 6 THEN
                 b_string := b_string || '萬';
               END IF;
               IF len - i = 2 THEN
                 b_string := b_string || '圓';
               END IF;
               IF len = i THEN
                  IF (len = 1) THEN
                     b_string := '零圓整';
                  ELSE
                     b_string := b_string || '整';
                  END IF;
               END IF;
               z_count := 0;
             ELSE
               IF z_count = 0 THEN
                 b_string := b_string || '零';
                 is_zero   := TRUE;
               END IF;
               z_count := z_count + 1;
             END IF;
           ELSE
             b_string := b_string || substr(n_string, to_number(n), 1) ||
                         substr(m_string, len - i + 1, 1);
             z_count   := 0;
             is_zero   := FALSE;
           END IF;
         END LOOP;
         b_string := l_sign || b_string ;
         RETURN b_string;
    exception
       --異常處理
        WHEN OTHERS THEN
           RETURN(SQLERRM);
    END;

    posted @ 2010-07-24 16:19 斷點 閱讀(301) | 評論 (0)編輯 收藏

    --創建存儲過程:
    create or replace procedure p
    is
      cursor c is
      select * from emp2 for update;
    begin
      for v_temp in c loop 
        if(v_temp.deptno = 10) then
          update emp2 set sal = sal+10 where current of c;
        elsif(v_temp.deptno = 20) then
          update emp2 set sal = sal+20 where current of c;
        else
           update emp2 set sal = sal+50 where current of c;
        end if;
      end loop;
      commit;
    end;

    --執行:
    exec p;

    begin
    p;
    end;


    --帶參數的存儲過程,in傳入參數,默認為傳入,out傳出。
    create or replace procedure p
       (v_a in number,v_b number,v_ret out number,v_temp in out number)
    is
    begin
      if(v_a >v_b) then
        v_ret := v_a;
      else
        v_ret := v_b;
      end if;
      v_temp :=v_temp +1;
    end;

    declare
      v_a number := 3;
      v_b number := 4;
      v_ret number;
      v_temp number := 5;
    begin
      p(v_a,v_b,v_ret,v_temp);
      dbms_output.put_line(v_ret);
      dbms_output.put_line(v_temp);
    end;

    posted @ 2010-07-24 16:17 斷點 閱讀(263) | 評論 (0)編輯 收藏

    --游標
    declare
      cursor c is
        select * from emp;
      v_emp c%rowtype;
    begin
      open c;
      loop
        fetch c into v_emp;
        exit when(c%notfound);
        dbms_output.put_line(v_emp.ename);
      end loop;
      close c;
    end;

    declare
      cursor c is
        select * from emp;
      v_emp emp%rowtype;
    begin
      open c;
      fetch c into v_emp;
        while(c%found) loop
          dbms_output.put_line(v_emp.ename);
          fetch c into v_emp;
          --fetch c into v_emp; 導致第一條沒有打印,最后一條打印2遍。
          --dbms_output.put_line(v_emp.ename);
      end loop;
      close c;
    end;


    declare
      cursor c is
        select * from emp;
    begin
      for v_emp in c loop
        dbms_output.put_line(v_emp.ename);
      end loop;
    end;


    --帶參數的游標
    declare
      cursor c(v_deptno emp.deptno%type,v_job emp.job%type)
      is
        select ename,sal from emp where deptno =v_deptno and job= v_job;
        --v_temp c%rowtype;
    begin
      for v_temp in c(30,'CLERK') loop  --for自動打開游標。
        dbms_output.put_line(v_temp.ename);
      end loop;
    end;


    --可更新的游標
    declare
      cursor c
      is
        select * from emp2 for update;
        --v_temp c%rowtype;
    begin
      for v_temp in c loop 
        if(v_temp.sal <2000) then
          update emp2 set sal = sal*2 where current of c;
        elsif(v_temp.sal = 5000) then
          delete from emp2 where current of c;
        end if;
      end loop;
      commit;
    end;

    posted @ 2010-07-24 16:14 斷點 閱讀(245) | 評論 (0)編輯 收藏

    PLSql是SQL的補充,PL過程語言procedure language,SQL:Structured Query Language。
    PLSql    帶有分支、循環的語言,SQL沒有分支、循環的語言。

    set serveroutput on;

    -- 簡單的PL/SQL語句塊
    declare
     v_name varchar2(20);
    begin
      v_name :='myname';
      dbms_output.put_line(v_name);
    end;
    /


    --語句塊的組成
    declare
     v_num number := 0 ;
    begin
      v_num := 2/v_num;
      dbms_output.put_line(v_num);
    exception
      when others then
         dbms_output.put_line('error');

    end;
    /

    --變量聲明的規則
    1、變量名不能夠使用保留字,如from、select等
    2、第一個字符必須是字母
    3、變量名最多包含30個字符
    4、不要與數據庫的表或者列同名
    5、每一行只能聲明一個變量


    --常用變量類型
    1、binary_integer:整數,主要用來計數而不是用來表示字段類型
    2、number:數字類型
    3、char:定長字符串
    4、varchar2:變長字符串
    5、date:日期
    6、long:長字符串,最長2GB
    7、boolean:布爾類型,可以取值true、false和null值


    --變量聲明
    declare
      v_temp number(1);
      v_count binary_integer :=0;
      v_sal number(7,2):= 4000.00;
      v_date date:= sysdate;
      v_pi constant number(3,2) := 3.14;  --constant相當java的final常量
      v_valid boolean := false;
      v_name varchar2(20) not null :='MyName';
    begin
      dbms_output.put_line('v_temp value:'|| v_temp);
    end;
     

    --變量聲明,使用%type屬性
    declare
      v_empno number(4);
      v_empno2 emp.empno%type;
      v_empno3 v_empno2%type;
    begin
      dbms_output.put_line('Test');
    end;


    --簡單變量賦值
    declare
      v_name varchar2(20);
      v_sal number(7,2);
      v_sal2 number(7,2);
      v_valid boolean :=false;
      v_date date;
    begin
      va_name :='MyName';
      v_sal :=23.77;
      v_sal2 :=23.77;
      v_valid:=(v_sal = v_sal2);
      v_date:=to_date('1999-08-12 12:23:38','YYYY-MM-DD HH24:MI:SS');  
    end;


    --Table變量類型,定義一種新的類型,是數組。
    declare
      type type_table_emp_empno is table of emp.empno%type index by binary_integer;
      v_empno type_table_emp_empno;
    begin
      v_empnos(0) := 7369;
      v_empnos(2) := 7839;
      v_empnos(-1) := 9999;
      dbms_output.put_line(v_empnos(-1));
    end;


    --Record變量類型,類似java的類的概念。
    declare
      type type_record_dept is record
      (
        deptno dept.deptno%type,
        dname dept.dname%type,
        loc dept.loc%type
      );
      v_tmp type_record_dept;
    begin
      v_tmp.deptno := 50;
      v_tmp.dname := 'aaaa';
      v_tmp.loc := 'bj';
      dbms_output.put_line(v_temp.deptno||''||v_temp.dname);
    end;


    --使用%rowtype聲明Record變量
    declare
      v_temp dept%rowtype;
    begin
      v_tmp.deptno := 50;
      v_tmp.dname := 'aaaa';
      v_tmp.loc := 'bj';
      dbms_output.put_line(v_temp.deptno||''||v_temp.dname);
    end;


    --SQL語句的運用,返回數據有且只有一條記錄。
    declare
      v_ename emp.ename%type;
      v_sal emp.sal%type;
    begin
      select ename,sal into v_ename,v_sal from emp where empno = 7369;
      dbms_output.put_line(v_ename||''||v_sal);
    end;

    declare
      v_emp emp%rowtype;
    begin
      select * into v_emp from emp where empno = 7369;
      dbms_output.put_line(v_emp.ename);
    end;

    declare
       v_deptno dept.deptno%type := 50;
       v_dname dept.dname%type := 'aaaa';
       v_loc dept.loc%type := 'bj';
    begin
      insert into dept2 values (v_deptno,v_dname,v_loc);
      commit;
    end;

    declare
      v_deptno emp2.deptno%type := 10;
      v_count number ;
    begin
      --update emp2 set sal = sal/2 where deptno = v_deptno;
      --select deptno into v_deptno from emp2 where empno = 7369;
      select count(*) into v_count from emp2;
      dbms_output.put_line(sql%rowcount||'條記錄被影響');
      commit;
    end;


    DDL語句:
    begin
      execute immediate 'create table T(nnn varchar2(20) default ''aaa'')';
    end;

    --if語句:取出7369的薪水,如果<1200,則輸出'low',如果<2000則輸出'middle',否則'high'
    declare
      v_sal emp.sal%type;
    begin
      select sal into v_sal from emp where empno = 7369;
      if(v_sal < 1200) then
        dbms_output.put_line('low');
      elsif(v_sal < 2000) then
        dbms_output.put_line('middle');
      else
        dbms_output.put_line('high');
      end if;
    end;


    --循環
    declare
      i binary_integer := 1;
    begin
      loop
        dbms_output.put_line(i);
        i := i+ 1;
        exit when (i >= 11);
      end loop;
    end;

    declare
      j binary_integer := 1;
    begin
      while j< 11 loop
        dbms_output.put_line(j);
        j := j+ 1;
      end loop;
    end;

    begin
      for k in 1..10 loop
        dbms_output.put_line(k);
      end loop;

      for k in reverse 1..10 loop
        dbms_output.put_line(k);
      end loop;
    end;


    --錯誤處理
    declare
      v_temp number(4);
    begin
      select empno into v_temp from emp where deptno = 10;
    exception
      when too_many_rows then
        dbms_output.put_line('太多記錄了');
      when others then
        dbms_output.put_line('error');
    end;


    declare
      v_temp number(4);
    begin
      select empno into v_temp from emp where empno = 2222;
    exception
      when no_data_found then
        dbms_output.put_line('沒數據');

    end;


    create table errorlog
    (
    id number primary key,
    errcode number,
    errmsg varchar2(1024),
    errdate date
    );


    create sequence seq_errorlog_id start with 1 increment by 1;


    declare
      v_deptno dept.deptno%type := 10;
      v_errmsg varchar2(1024);
    begin
      delete from dept where deptno = v_deptno;
      commit;
    exception
      when others then
      rollback;
      v_errcode := SQLCODE;  --關鍵字,代表出錯的代碼。
      v_errmsg := SQLERRM;
      insert into errorlog values (seq_errorlog_id.nextval,v_errcode,v_errmsg,sysdate);
      commit;
    end;

    posted @ 2010-07-24 16:03 斷點 閱讀(315) | 評論 (0)編輯 收藏

    構造數據庫必須遵循一定的規則。在關系數據庫中,這種規則就是范式。關系數據庫中的關系必須滿足一定的要求,即滿足不同的范式。目前關系數據庫有六種范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。滿足最低要求的范式是第一范式(1NF)。在第一范式的基礎上進一步滿足更多要求的稱為第二范式(2NF),其余范式以次類推。一般說來,數據庫只需滿足第三范式(3NF)就行了。


    第一范式(1NF):無重復的列。
        所謂第一范式(1NF)是指數據庫表的每一列都是不可分割的基本數據項,同一列中不能有多個
    值,即實體中的某個屬性不能有多個值或者不能有重復的屬性。如果出現重復的屬性,就可能需要定義一個新的實體,新的實體由重復的屬性構成,新實體與原實體之間為一對多關系。在第一范式(1NF)中表的每一行只包含一個實例的信息。簡而言之,第一范式就是無重復的列。
       
       數據庫表中的字段都是單一屬性的,不可再分。這個單一屬性由基本類型構成,包括整型、實數、字符型、邏輯型、日期型等。

    說明:在任何一個關系數據庫中,第一范式(1NF)是對關系模式的基本要求,不滿足第一范式(1NF)的數據庫就不是關系數據庫。

     

    第二范式(2NF):屬性完全依賴于主鍵[消除部分子函數依賴]。
     
        第二范式(2NF)是在第一范式(1NF)的基礎上建立起來的,即滿足第二范式(2NF)必須先滿
    足第一范式(1NF)。第二范式(2NF)要求數據庫表中的每個實例或行必須可以被惟一地區分。為實現區分通常需要為表加上一個列,以存儲各個實例的惟一標識。例如員工信息表中加上了員工編號(emp_id)列,因為每個員工的員工編號是惟一的,因此每個員工可以被惟一區分。這個惟一屬性列被稱為主關鍵字或主鍵、主碼。
        第二范式(2NF)要求實體的屬性完全依賴于主關鍵字。所謂完全依賴是指不能存在僅依賴主
    關鍵字一部分的屬性,如果存在,那么這個屬性和主關鍵字的這一部分應該分離出來形成一個新的實體,新實體與原實體之間是一對多的關系。為實現區分通常需要為表加上一個列,以存儲各個實例的惟一標識。簡而言之,第二范式就是屬性完全依賴于主鍵。

    第三范式(3NF):屬性不依賴于其它非主屬性[消除傳遞依賴]。
       
        滿足第三范式(3NF)必須先滿足第二范式(2NF)。簡而言之,第三范式(3NF)要求一個數據庫表中不包含已在其它表中已包含的非主關鍵字信息。例如,存在一個部門信息表,其中每個部門有部門編號(dept_id)、部門名稱、部門簡介等信息。那么在的員工信息表中列出部門編號后就不能再將部門名稱、部門簡介等與部門有關的信息再加入員工信息表中。如果不存在部門信息表,則根據第三范式(3NF)也應該構建它,否則就會有大量的數據冗余。簡而言之,第三范式就是屬性不依賴于其它非主屬性。
        
    所謂傳遞函數依賴,指的是如果存在"A → B → C"的決定關系,則C傳遞函數依賴于A。

    posted @ 2010-07-18 10:23 斷點 閱讀(214) | 評論 (0)編輯 收藏

    序列:sequence,產生一個獨一無二的序列,是oracle特有的。

    create table article
    (
    id number,
    title varchar2(1024),
    cont long
    );
    insert into article values(seq.nextval,'a','b');

    select * from user_sequences; --查詢序列

    create sequence seq; --創建序列seq對象
    select seq.nextval from dual;
    drop sequence seq;

    posted @ 2010-07-17 22:08 斷點 閱讀(203) | 評論 (0)編輯 收藏

    僅列出標題
    共18頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
    主站蜘蛛池模板: 亚洲男人天堂2018av| 亚洲情a成黄在线观看动漫尤物| 亚洲国产美女精品久久久久| 国内精品免费在线观看| 亚洲日韩精品A∨片无码| 一级毛片**免费看试看20分钟 | 99久久综合国产精品免费| 亚洲av午夜成人片精品网站| igao激情在线视频免费| 国产高清视频免费在线观看| 亚洲国产成人超福利久久精品| 亚洲人成日本在线观看| 久久99国产乱子伦精品免费| 亚洲小说区图片区| 91免费播放人人爽人人快乐| 亚洲看片无码在线视频| 蜜桃精品免费久久久久影院| 韩国亚洲伊人久久综合影院| 久久影视综合亚洲| 日韩精品无码免费一区二区三区| 亚洲无圣光一区二区| 精品久久久久久久免费加勒比| 老司机免费午夜精品视频| 亚洲精品无码专区2| 一个人免费视频在线观看www| 亚洲综合一区二区精品久久| 成人超污免费网站在线看| 真正全免费视频a毛片| 亚洲国产一成人久久精品| ww4545四虎永久免费地址| 丰满亚洲大尺度无码无码专线| 自拍偷自拍亚洲精品第1页| 亚欧免费视频一区二区三区| WWW亚洲色大成网络.COM| 亚洲av无码成人黄网站在线观看 | 性感美女视频在线观看免费精品 | 亚洲AV无码专区在线亚| 国产免费69成人精品视频| 国内精品久久久久影院免费| 亚洲一本一道一区二区三区| 日韩亚洲变态另类中文|