久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Oracle概念:過程、函數、程序包

瀏覽:2日期:2023-11-12 08:35:14

之前學習的PL/SQL塊是匿名的,不能將其存儲 target=_blank>存儲到數據庫中。

我們可以命名我們的PL/SQL塊,并為他們確定參數,存儲在數據庫中。這樣可以從任何數據庫客戶端或者工具引用和運行他們,比如SQL*PLUS, Pro*C, JDBC。這些命名的PL/SQL塊成為存儲過程和函數,他們的集合成為程序包。

優點:

1. 可重用性:一旦命名并保存在數據庫中后,任何應用都可以

2. 抽象和數據隱藏

3. 安全 target=_blank>安全性

過程

存儲過程就是命了名的PL/SQL塊,可以被賦予參數,存儲在數據庫中,然后由另一個應用或者PL/SQL例程調用。比如

CREATE PROCEDURE my_proc as

BEGIN

NULL;

END;

/

語法:

CREATE [OR REPLACE] PROCEDURE procedure_name (參數)

IS | AS

[PRAGMA AUTONOMOUS_TRANACTION;] --聲明自主事務處理。

[本地變量聲明]

BEGIN

執行語句部分

[EXCEPTION]

錯誤處理部分

END[name];

/

CREATE OR REPLACE PROCEDURE my_proc as -- OR REPLACE

BEGIN

Dbms_output.put_line(‘Hello, world’);

END;

/

執行存儲過程

set serveroutput on

begin

my_proc

end;

/

直接執行:

execute my_proc

exec my_proc

權限:

表和視圖具有SELECT, INSERT, UPDATE, DELETE 這樣的特權,而過程具有EXECUTE特權。只有將EXECUTE 特權賦予用戶,用戶才可以運行它。而將它賦予PUBLIC用戶,則所有用戶都可以運行。

[試驗]

創建3個用戶

conn donny/donny

create user chris identified by chris;

此時不能連結數據庫,不能創建過程

grant connect, resource to chris;

create user sean identified by sean;

grant connect, resource to sean;

create user mark identified by mark;

grant connect, resource to mark;

使用mark建立一個過程

conn mark/mark

create procedure marks_proc as

begin

null;

end;

/

嘗試使用chris用戶執行這個過程:

conn chris/chris

exec mark.marks.proc

授權:

conn mark/mark

grant execute on marks_proc to chris

conn chris/chris

exec mark.marks_proc

嘗試使用sean用戶執行這個過程:

conn sean/sean

exec mark.marks.proc

將execute 授予public用戶,使得所有用戶都可以執行這個過程

conn mark/mark

grant execute on marks_proc to public;

conn sean/sean

exec mark.marks.proc

參數:

過程可以進行參數化處理,可以為任何合法的PL/SQL類型,有三種模式:IN, OUT, IN OUT

IN 參數通過調用者傳入,只能由過程讀取,不能改變。是默認的模式,可以具有默認值。

OUT 參數有過程寫入。用于過程需要向調用者返回多條信息的時候。不能是具有默認值的變量,也不能是常量,必須向OUT參數傳遞返回值。

IN OUT 具有兩者的特性,可以讀取和寫入。

IN參數:

Create table t(n number);

Create or replace

procedure insert_into_t (p in number ) is

begin

insert into t values(p);

end insert_into_t;

/

這個時候并沒有執行該過程,嘗試執行

select * from t;

exec insert_into_t (p=> 100);

select * from t;

例子2

drop table t;

Create table t

(n number,

p varchar2(20));

Create or replace

procedure insert_into_t (

p1 in number,

p2 in number) is

begin

insert into t values(p1,’p1’);

insert into t values(p2,’p2’);

end insert_into_t;

/

這個時候并沒有執行該過程,嘗試執行

select * from t;

exec insert_into_t (p1=> 100, p2=>200);

select * from t;

參數傳遞方法:

1. 使用名稱表示

exec insert_into_t (p2=> 101, p1=>201);

2. 使用位置表示

exec insert_into_t (102, 202);

3. 使用混合表示

適用于有默認值的情況,注意:OUT 和 IN OUT 參數不能有默認值

CREATE OR REPLACE procedure default_values(

P1 varchar2,

P2 varchar2 default ‘Chris’,

P3 varchar2 default ‘Sean’) as

Begin

Dbms_output.put_line(p1);

Dbms_output.put_line(p2);

Dbms_output.put_line(p3);

End default_values;

/

只想傳入1,3參數:

set serveroutput on

exec default_values(‘Tom’, p3=>’Joel’);

OUT 參數:

從過程向調用者返回值:

例子:使用scott.emp表,編寫搜索過程,輸入empno,返回ename , sal

分析:

desc scott.emp

參數:一個in, 兩個out

參數類型:in number, out emp.ename%type , out emp.sal%type

con scott/tiger

create or replace

procedure emp_lookup(

p_empno in number,

o_ename out emp.ename%type ,

o_sal out emp.sal%type) as

begin

select ename, sal

into o_ename, o_sal

from emp

where empno= p_empno;

exception

when NO_DATA_FOUND then

o_ename := ‘null’;

o_sal := -1;

end;

/

執行該過程:

1. 使用匿名PL/SQL

分析:目的是輸出兩個out參數的結果,所以匿名塊中也要定義2個與out參數相同的局域變量。

set serveroutput on

declare

l_ename emp.ename%type;

l_sal emp.sal%type;

begin

emp_lookup(7782, l_ename, l_sal);

dbms_output.put_line(‘Ename = ‘ || l_ename);

dbms_output.put_line(‘Sal = ‘ || l_sal);

end;

/

2. 在sql plus 中執行

分析:需要使用sql plus 的VARIABLE命令綁定參數值,即為OUT參數提供接受返回值的變量。

Variable name varchar2(10);

Variable sal number;

Exec emp_lookup(‘7782’, :name, :sal);

Print name;

Print sal;

Select :name, :sal from dual;

IN OUT 參數:

可以用來傳入參數,并從存儲過程返回值。

例子:輸入兩個數,交換值

思路:通過一個臨時變量作為交換過程中的過渡

create or replace

procedure swap(

p1 in out number,

p2 in out number ) as

l_temp number; --局域變量的聲明,相當于匿名塊中declare之后的聲明;過程:as~begin

begin

l_temp := p1;

p1 := p2;

p2 := l_temp;

end swap;

/

set serveroutput on

declare

l1 number:=100;

l2 number:=200;

begin

swap(l1,l2);

dbms_output.put_line(‘l1 = ‘|| l1);

dbms_output.put_line(‘l2 = ‘|| l2);

end;

/

關于自主事務處理: P197

我們曾經討論過COMMIT 和 ROLLBACK的概念。

建立過程P2:

CREATE OR REPLACE PROCEDURE P2 AS

A varchar2(50);

Begin

Select venadd1 into a from vendor_master where vencode=’V002’;

Dbms_output.put_line(a);

ROLLBACK;

END;

/

建立過程P1,調用P2:

CREATE OR REPLACE PROCEDURE P1 AS

B varchar2(50);

Begin

Update vendor_master set venadd1=’10 Walls Street ‘ where vencode=’V002’;

P2();

Select venadd1 into b from vendor_master where vencode=’V002’;

Dbms_output.put_line(b);

ROLLBACK;

END;

/

exec p1

說明事務處理可以跨越過程繼續執行。

為了防止一個過程影響其他過程,可以將其標記為自主的。這樣p2中的rollback將不會影響p1

CREATE OR REPLACE PROCEDURE P2 AS

A varchar2(50);

PRAGMA AUTONOMOUS_TRANSACTION;

Begin

Select venadd1 into a from vendor_master where vencode=’V002’;

Dbms_output.put_line(a);

ROLLBACK;

END;

/

EXEC P1; 函數:

與過程相似,遵循了相同的規則。

參數傳遞:只能帶有in參數,不能使用out, in out 參數

函數的主要特性是必須返回一個值。

語法:

CREATE [OR REPLACE] FUNCTION function_name (參數)

RETURN datatype

IS | AS

[PRAGMA AUTONOMOUS_TRANACTION;] --聲明自主事務處理。

[本地變量聲明]

BEGIN

執行語句部分

[EXCEPTION]

錯誤處理部分

END[name];

/

返回值:

定義函數的時候必須使用RETURN datatype 子句,表示函數要返回的數據類型。

在函數體中的任何地方,都可以使用 RETURN <表達式>返回值,類型要和定義中的相同。

CREATE OR REPLACE

FUNCTION my_func

RETURN varchar2

As

Begin

Return ‘HELLO, WORLD’;

END;

/

調用函數:

用戶必須要獲取返回值,所以調用時,要聲明一個局域變量:

set serveroutput on

declare

l_str varchar2(100) := null;

begin

l_str := my_func;

dbms_output.put_line(l_str);

end;

/

也可以將函數用作其他過程以及函數的IN參數。

Create or replace

Procedure show_it(p varchar2) as

Begin

Dbms_output.put_line(p);

End;

/

exec show_it(my_func);

練習:

編寫一個函數ITE,實現:boolean expression ? true_value: false_value

輸入一個表達式expression, IF正確,THEN輸出true_value;ELSE,輸出false_value

分析:3個in 參數,一個boolean, 2個varchar2

create or replace

function ite(

p_expression Boolean,

p_true varchar2,

p_false varchar2)

return varchar2

as

begin

if p_expression then

return p_true;

end if;

return p_false;

end;

/

exec dbms_output.put_line(ite(1=2, ‘Equal’,’Not equal’));

程序包:

是對PL/SQL類型,過程,函數,游標,異常,變量,常量的封裝。

包括兩部分:規范和主體

規范:是程序包的公共接口,

主體:規范的實現,以及私有例程、數據和變量。

語法:

CREATE OR REPLACE PACKAGE package_name

IS | AS

公用類型或變量常量的聲明;

公用過程或函數的聲明;

END package_name;

/

CREATE OR REPLACE PACKAGE BODY package_name

IS | AS

私有類型或變量常量的聲明;

公用過程或函數的實現;

END package_name

規范:

規范是程序包的接口,規范中定義的所有內容都可以由調用者使用(當然需要具有EXECUTE特權),比如規范中定義的過程函數可以被執行,類型可以被訪問,變量可以被引用。

例子:使用兩個過程PRINT_ENAME() 和PRINT_SAL(),定義稱為EMPLOYEE_PKG的程序包。

CREATE OR REPLACE

PACKAGE employee_pkg as

Procedure print_ename(p_empno number);

Procedure print_sal(p_empno number);

End;

/

并沒有為過程提供代碼,只是定義了名稱和參數。

這個時候如果試圖使用這個包,會報錯

exec employee_pkg.print_ename(1234);

主體:

程序包是過程,函數的具體實現部分,實現規范中定義的接口。

CREATE OR REPLACE

PACKAGE BODY employee_pkg as

Procedure print_ename(p_empno number) is

L_ename emp.ename%type;

Begin

Select ename into l_ename from emp where empno=p_empno;

Dbms_output.put_line(l_ename);

Exception

When no_data_found then

Dbms_output.put_line(‘Invalid employee number’);

End print_ename;

Procedure print_sal(p_empno number) is

L_sal emp.sal%type;

Begin

Select sal into l_sal from emp where empno=p_empno;

Dbms_output.put_line(l_sal);

Exception

When NO_DATA_FOUND then

Dbms_output.put_line(‘Invalid employee number’);

End print_sal;

End employee_pkg;

/

執行:

set serveroutput on

exec employee_pkg.print_ename(1234);

exec employee_pkg.print_ename(7782);

exec employee_pkg.print_sal(7782);

過程和函數的重載:

在單獨的程序包中定義的共享相同名稱的兩個或者多個過程和函數。單獨的過程和函數必須具有唯一的名稱,但是程序包中可以有條件的共享相同的名稱。

條件:參數列表在數量、次序或者參數類型上有所區別,比如

procedure foo(p1 varchar2);

procedure foo(p1 number);

procedure foo(p1 varchar2, p2 number);

procedure foo(p1 varchar2, p2 varchar2);

但是:只在參數名稱、輸入輸出模式、或者返回類型上不同,是不夠的。比如

procedure foo(p1 varchar2);

procedure foo(p2 varchar2);

procedure foo(p1 in varchar2);

procedure foo(p1 in out varchar2);

例如

desc dbms_output

試驗:重載SWAP()

之前的例子:

create or replace

procedure swap(

p1 in out number,

p2 in out number ) as

---

l_temp number;

begin

l_temp := p1;

p1 := p2;

p2 := l_temp;

end swap;

/

該例子只能實現交換數值,我們將其包裝,并進行重載,使其也可以交換varchar2 和 date

(1) 建立規范

create or replace package utilities as

procedure swap(p1 in out number, p2 in out number);

procedure swap(p1 in out varchar2,p2 in out varchar2);

procedure swap(p1 in out date,p2 in out date);

end utilities;

/

(2) 建立主體

create or replace package body utilities as

procedure swap(p1 in out number, p2 in out number ) as

l_temp number;

begin

dbms_output.put_line(‘Swapping number’);

l_temp := p1;

p1 := p2;

p2 := l_temp;

end swap;

procedure swap(p1 in out varchar2,p2 in out varchar2) as

l_temp varchar2(32767);

begin

dbms_output.put_line(‘Swapping varchar2’);

l_temp := p1;

p1 := p2;

p2 := l_temp;

end swap;

procedure swap(p1 in out date,p2 in out date) as

l_temp date;

begin

dbms_output.put_line(‘Swapping date’);

l_temp := p1;

p1 := p2;

p2 := l_temp;

end swap;

end utilities;

/

(3) 測試結果:

set serveroutput on

declare

l_num1 number :=1;

l_num2 number :=2;

l_date1 date:= sysdate;

l_date2 date:= sysdate +1;

begin

utilities.swap(l_num1,l_num2);

dbms_output.put_line(‘l_num1=’|| l_num1);

dbms_output.put_line(‘l_num2=’|| l_num2);

utilities.swap(l_date1,l_date2);

dbms_output.put_line(‘l_date1=’|| l_date1);

dbms_output.put_line(‘l_date2=’|| l_date2);

end;

/

程序包中的游標:

在PL/SQL塊中,return 子句是游標的可選部分。

在規范中聲明游標的時候,必須存在與游標關聯的return 子句,表示從游標獲取的數據元素類型。

并且游標的select 子句只出現在主體中,不出現在規范中。

Create or replace package cur_pack is

Cursor ord_cur return order_master%rowtype;

Procedure ord_pro (orno varchar2);

End;

/

Create or replace package body cur_pack is

Cursor ord_cur return order_master%rowtype is

Select * from order_master;

Procedure ord_pro (orno varchar2) is

Or_rec order_master%rowtype;

Begin

Open ord_cur;

Loop

Fetch ord_cur into or_rec;

Exit when ord_cur%notfound;

Dbms_output.put_line(‘Return ’|| or_rec.orderno);

End loop;

End ord_pro;

End cur_pack;

/

PRAGMA RESTRICT REFERENCES

P206

限定函數的純度級別

P197

WNDS: write no data status

RNDS: read no data status

WNPS: write no package status

RNPS: read no package status

Create or replace package pack_me is

Procedure order_proc(orno varchar2);

Function order_fun (ornos varchar2) return varchar2;

Pragma restrict_references(order_fun, WNDS,RNDS);

END;

/

數據字典:

select object_name, object_type

from user_objects

where object_type in (‘PROCEDURE’,’FUNCTION’,’PACKAGE’,’PACKAGE BODY’);

查看用戶代碼:

desc user_source

select text from user_source where name=’INSERT_INTO_T’ order by line;

desc employee_pkg

包裝工具:

將utilities包的主體部分保存在utilities.sql文件中,通過wrap工具加密,只生成oracle認識的格式,保護智力成果

wrap iname=utilities.sql

生成utilities.plb

規范部分:

create or replace package utilities as

procedure swap(p1 in out number, p2 in out number);

procedure swap(p1 in out varchar2,p2 in out varchar2);

procedure swap(p1 in out date,p2 in out date);

end utilities;

/

select text from user_source where name='UTILITIES';;

標簽: Oracle 數據庫
相關文章:
主站蜘蛛池模板: 国产在线播放av | 黄色网址大全在线观看 | 福利视频一区二区 | 日韩亚洲视频在线观看 | 精品成人一区 | 国产色网| av一二三四| 四季久久免费一区二区三区四区 | 欧美精品一区二区三区一线天视频 | 国产精品资源在线 | 成人免费毛片嘿嘿连载视频 | 91资源在线观看 | 69日影院| 美女久久久 | 亚洲欧美国产精品久久久久 | 成人欧美一区二区三区视频xxx | www.亚洲 | 欧美xxxx网站 | 成人影院网站ww555久久精品 | 免费在线黄 | 日本一区二区不卡 | 美女诱惑av| 成人av影院 | 日韩一级免费在线观看 | 操操操av | 黄色片免费观看网站 | 日本黄网站在线观看 | 中文字幕在线资源 | 偷拍自拍第一页 | 污色视频在线观看 | 久久综合91 | 亚洲综合第一页 | 久久久久亚洲国产 | 久久综合一区二区三区 | 久久久精品影院 | 日本精品一区二区三区在线观看视频 | 欧美1级 | 欧美成人精品一区二区男人看 | 久久伊人一区 | 亚州av | 国产高清美女一级a毛片久久 | 91精品国产欧美一区二区成人 | 黄视频网址 | 日韩成人免费在线 | 日日爽| 日本在线不卡视频 | 久久久久亚洲 | 亚洲欧美aⅴ | 国产精品久久久久精 | 欧洲国产伦久久久久久久 | 国产精品国产三级国产aⅴ无密码 | 日日摸夜夜添夜夜添高潮视频 | av官网在线| 国产精品国产精品国产专区不片 | 欧美日韩在线观看中文字幕 | 欧美日韩电影一区 | 久久久久久精 | www国产亚洲精品 | 日本成人午夜影院 | 欧美日韩另类在线 | 亚洲国产精品一区二区第一页 | 欧美精品一区视频 | 成人亚洲| 三级黄色片在线播放 | 欧美黄色一区 | 日韩午夜激情 | 欧美成人精品激情在线观看 | 成人羞羞在线观看网站 | 亚洲人成人一区二区在线观看 | 国产成人福利在线 | 中文字幕一区二区三区日韩精品 | 午夜电影在线看 | 久久久影院 | 欧美综合婷婷 | 欧美成人久久 | 国产精品1区2区3区 中文字幕一区二区三区四区 | 亚洲欧洲一区二区三区 | 欧美一a一片一级一片 | 午夜国产一级片 | 杨门女将寡妇一级裸片看 | 夜夜天天操 | 看毛片网| 久久久精品国产 | 伊人网综合视频 | 日日操夜夜操免费视频 | 国产在线小视频 | 天天爽天天草 | 日韩精品在线观看免费 | av女人的天堂 | 亚洲成人一区二区 | 日韩成人影院在线观看 | 色吧欧美 | 中文字幕一区二区三区乱码在线 | 日韩成人一区二区 | 日韩精品一区二区三区四区五区 | 色综合一区 | 国产欧美综合视频 | 美女毛片 | 精品综合| 在线观看日韩 | 欧洲亚洲精品久久久久 | 免费视频一区 | 一区二区精品视频 | 免费视频久久 | 日韩精品在线视频观看 | 国产精品一区久久久久 | 一级一片免费看 | 国产精品久久久久久久久免费 | 亚洲综合色视频在线观看 | 国产成人精品免费视频大全最热 | 久久久久久久av | 最新国产精品 | 日韩中文字幕在线免费 | 亚洲国产婷婷香蕉久久久久久99 | 国产大学生援交视频在线观看 | a级片在线观看 | 亚洲h视频在线观看 | 综合五月 | 91麻豆精品国产91久久久资源速度 | 日韩中文字幕免费在线 | 一区二区成人网 | 精品一区二区三区三区 | 日韩欧美在线视频播放 | 一区二区三区免费 | 狠狠躁夜夜躁人人爽天天高潮 | 日韩精品专区 | 欧美国产视频一区 | av免费在线观看网址 | a∨色狠狠一区二区三区 | www中文字幕| 在线播放中文字幕 | 国产高清精品一区二区三区 | 日韩精品一区二区三区在线 | 日韩精品免费在线观看 | 久久在线视频 | 国产高清不卡在线 | 亚洲国产精品福利 | 欧美日韩一区二区三区四区 | 欧美小电影 | 日本jizz在线观看 | 欧美xxxⅹ性欧美大片 | 最新中文字幕 | 国产精品精品 | 日日噜 | 国产精品一二区 | 欧美日韩中文字幕在线 | 国内精品视频在线观看 | 欧美一级成人欧美性视频播放 | 国产毛片一区二区 | 欧美日韩在线播放 | 日韩在线小视频 | 亚洲看片 | 中文字幕第一页在线视频 | 久久99精品国产.久久久久 | 欧美日韩中文在线 | 国产精品高潮呻吟久久av野狼 | 欧美日韩精品一区二区在线观看 | 日韩一区二区三区在线观看 | av天天干| 91精品国产91久久久久久蜜臀 | 伊人免费观看视频 | 亚洲精品影院 | 一级毛片免费完整视频 | 欧美精品一区在线发布 | 精品日韩欧美一区二区三区在线播放 | 作爱视频免费看 | 看亚洲a级一级毛片 | 久久久久一 | 三级免费网站 | 91精品国产一区二区三区四区在线 | 男人的天堂久久精品 | 国产一区二区三区高清 | 国产日韩精品在线观看 | 久草视频首页 | 一区二区三区四区久久 | 婷婷在线观看视频 | 国产一区二区三区在线 | 国产精品久久久久久久久久妇女 | a免费视频 | 国产精品99久久久久久宅男 | 精品久久久久久久久久久院品网 | 亚洲黄色免费观看 | 北条麻妃一区二区三区中文字幕 | 久久99精品久久久噜噜最新章节 | 国产成人精品免高潮在线观看 | 国产亚洲精品久 | 免费成人在线网站 | www.日韩.com | 99pao成人国产永久免费视频 | 日韩2020狼一二三 | 色呦呦网站在线观看 | 毛片在线免费 | 一级在线| 在线观看你懂的网站 | 午夜精品久久久久久久久久久久久 | 91精品国产乱码久久久久久久久 | 一级毛片免费视频 | 99久久99久久 | 国产精品久久精品 | av免费观看网站 | 日本黄色激情片 | 亚洲在线观看免费视频 | 亚洲久久久 | 国产日韩精品视频 | 国产电影一区二区 | 天天操操 | 久久一区二区三区四区五区 | 老司机午夜免费精品视频 | 国产色区 | 久久久精品综合 | 国内精品一区二区 | 久久久久久久久久久久网站 | 97国产在线视频 | 国产亚洲精品久久久久久豆腐 | 久久精品亚洲精品国产欧美kt∨ | 天天舔夜夜操 | 国产一区二区精品久久岳 | 在线观看免费毛片视频 | 日韩av免费| 久久久久久久久99精品 | 日日摸天天做天天添天天欢 | 久久久久久亚洲 | 国产精品免费一区二区三区四区 | 欧美高清成人 | 日本在线观看视频网站 | 精品一区二区在线观看 | 特级av| 欧美精品一区二区三区在线播放 | 一区二区三区亚洲 | 亚洲精品视频在线看 | 999久久久国产999久久久 | 国产成人一区二区三区影院在线 | 亚洲国产日韩在线 | 欧美精品在线观看免费 | 六月丁香在线观看 | 在线观看国产一区 | 日韩免费在线 | 精品福利在线视频 | 久久综合久久久 | 成人不卡 | 久久精品国产99国产精2020新增功能 | 伊人在线 | 久久成人一区 | 久久久久久精 | 国产欧美网址 | 久久91精品 | 精品日韩一区 | 一级毛片视屏 | 狠狠狠狠狠狠干 | 在线中文一区 | 亚洲免费观看 | 成人免费视频网址 | 午夜免费视频 | 国产精品美女久久 | 国产精品视频网 | 在线国产一区二区 | 成人福利在线观看 | 久热九九 | 一级免费大片 | 午夜在线免费观看 | 中文字幕精品一区二区三区精品 | 中文字幕一区二区三区乱码在线 | 国产三级自拍 | 日韩久久久久久 | 成av人在线 | 天堂中文字幕 | 一级毛片在线 | 天天干天天干天天干天天射 | 国产亚洲精品久久久久久久久 | 亚洲精品久久久一区二区三区 | 久久91精品久久久久久9鸭 | 日韩欧美国产一区二区三区 | 国产精品成人品 | 毛片网| 激情五月婷婷综合 | 毛片av片 | 久久久久久久久一区二区三区 | 日韩国伦理久久一区 | 午夜影院18 | 在线免费国产 | 亚洲综合无码一区二区 | 久久在线播放 | 国产综合视频在线观看 | 亚洲日本欧美日韩高观看 | av超碰| 91精品视频在线播放 | 久久久久久国产精品 | 国产色| 在线观看亚洲精品视频 | 日韩大尺度电影在线观看 | 久久久久久91亚洲精品中文字幕 | 精品无人乱码区1区2区3区 | 中文字幕在线观看1 | 国产精品美女久久久久久久久久久 | 国产精品免费看 | 欧美一区二区免费 | 久久国产欧美日韩精品 | 亚洲精品一区中文字幕乱码 | 成人精品免费视频 | 国产成人精品一区 | 亚洲欧洲免费视频 | 久久福利 | 久久久日本| 无码日韩精品一区二区免费 | 夜夜操天天操 | 日韩欧美一区二区三区久久婷婷 | 97男人的天堂 | 日韩精品999 | 国产精品久久久久久一区二区三区 | 日韩在线免费视频 | 日韩成人国产 | 激情久久久| 国产成人天天爽高清视频 | 国产欧美日韩一区二区三区 | www.操.com | 久久精品中文字幕 | 在线观看中文字幕亚洲 | 久久久久国 | 欧美a在线| 欧美一级免费看 | 亚洲欧美一区二区三区视频 | av av在线| 亚洲国产精品99久久久久久久久 | 四虎影院免费网址 | 午夜影院18 | 日韩中文在线 | 日韩精品一区在线 | 欧美一区二区三区精品 | 婷婷激情在线 | 黄色成人免费看 | 一级黄色片a级 | 狠狠做深爱婷婷综合一区 | 日韩在线视频一区 | 另类五月| www.麻豆视频 | 人人艹人人爽 | 99日韩| 日韩精品一区二区三区 | 日韩一区二区视频在线 | 一本一本久久a久久精品综合妖精 | 久久久999精品视频 五月天婷婷在线视频 | 久久不卡 | 精品乱子伦一区二区三区 | 国产高清在线精品一区二区三区 | 中文天堂av| 亚洲成人免费影院 | 亚洲成人免费影院 | 日本三级电影免费 | 成人伊人 | 91视频观看 | 日韩精品99| 人人干天天操 | 操操操干干干 | 国产91网址 | 亚洲精品乱码久久久久久 | 爱爱免费视频网站 | 成人一区二区电影 | 夜夜骚| 国产精品久久久久久久久久三级 | 亚洲欧美日韩精品 | h在线视频| 天天色影视综合 | 国产一区二区久久久 | 国产精品久久av | 亚洲视频 欧美视频 | 色人人 | 国产精品国产精品国产专区不卡 | 国产精品久久久久久久久免费高清 | 亚洲欧美在线播放 | 春色av | 午夜精品久久久久久 | 亚洲在线成人 | 天天干狠狠 | 日韩精品视频在线观看一区二区 | 狠狠的日 | 91大神免费在线观看 | 性开放xxxhd视频 | 日韩一区二区三区在线 | 大香伊在人线免97 | 欧美精品1| 欧美成人一区二区三区片免费 | 一 级 黄 色 片免费网站 | 91免费观看视频 | 免费观看一级特黄欧美大片 | 九九在线视频 | 天天噜天天干 | 香蕉视频一级片 | 日本在线一区二区三区 | www国产亚洲精品久久网站 | 日韩在线一区二区三区 | 免费av毛片 | 国产日韩精品一区二区 | av成人在线观看 | 在线免费观看日韩视频 | 国产av毛片| 电影k8一区二区三区久久 | 中文字幕成人在线 | 日韩中文在线观看 | 亚洲成人网一区 | 精品精品久久 | 91午夜在线 | 一区二区三区四区免费观看 | 久久久久亚洲精品 | 91伊人| 国产精品视频免费观看 | www.一区| 岛国av在线| 国产目拍亚洲精品99久久精品 | 日日干日日爽 | 亚洲欧美在线播放 | 九九热精品免费视频 | 久久生活片 | 精品国产色 | 欧美日韩国产一区二区三区在线观看 | 这里只有精品视频 | 午夜久久视频 | 日韩欧美在线观看一区二区三区 | 亚洲国产婷婷香蕉久久久久久99 | 日韩精品一区二区三区在线播放 | 日韩成人国产 | 久久视频在线 | 天天宗合网 | 天天干天天干天天干天天射 | av网战 | 这里只有精品视频 | 中文字幕成人网 | 久久精品久久久久久 | 色婷婷影院 | av免费在线观看网站 | 精品视频免费观看 | 国产九九在线观看 | 国产99久久精品 | 蜜桃视频成人m3u8 | 裸体的日本在线观看 | 成人二区| av色伊人久久综合一区二区 | 亚洲欧美一区二区三区在线 | 日韩成人一区二区 | 亚洲一区二区三区久久 | 国产人久久人人人人爽 | 成人精品一区二区 | 91久久精品日日躁夜夜躁国产 | 亚洲av毛片一区二二区三三区 | 亚洲精品一二区 | 狠狠狠 | 欧美a在线 | 成人国产精品视频 | 亚洲国产视频一区 | 亚洲综合第一页 | 日产久久| 欧美日韩在线视频一区二区 | 国产福利免费视频 | 999久久久国产精品 免费视频一区 | 久久综合一区二区 | 免费看片国产 | 欧美第一页| 丁香亚洲 | 91亚洲狠狠婷婷综合久久久 | 国产精品国产三级国产aⅴ中文 | 91亚洲高清 | 97久久久国产精品 | 成人一区二区三区在线 | 欧美精品tv | 综合网视频 | 白浆在线| 日本欧美久久久久免费播放网 | 久久久久久网站 | a毛片在线免费观看 | 日韩免费观看视频 | 黄网在线观看 | 7878www免费看片 | 久久aⅴ乱码一区二区三区 91综合网 | 五月婷婷综合久久 | 我爱操| 国产99久久精品一区二区永久免费 | 久久免费精品 | 亚洲成人福利 | 黄色片com | 成人a在线视频 | 91麻豆产精品久久久久久 | 久久精品一二三四 | 91精品国产日韩91久久久久久 | av午夜| 国产精品18久久久久久久久久久久 | 国产激情精品视频 | 一区二区三区国产 | 亚洲国产一区视频 | 亚洲精品成人久久久 | 九九热这里只有精品6 | av在线一区二区三区 | 国产亚洲精品美女久久久久久久久久 | 黄色一级电影免费观看 | 国产一级黄色 | 国产一区2区 | 国产精品久久久久毛片软件 | 91国内精品 | 成人欧美一区二区 | 日韩视频在线观看视频 | 日韩成人免费 | 欧美视频网站 | 成人av高清 | 精品国产一区二区在线 | 久久久久久久国产 | 激情五月综合网 | 久久aⅴ乱码一区二区三区 91综合网 | 亚洲中出 | 操操日| 亚洲欧美在线一区二区 | 欧美操穴 | 97视频免费在线观看 | 亚洲黄色一区二区 | 日韩一区二区三区四区五区 | 国产成年免费视频 | 国产成人久久精品一区二区三区 | 欧美日韩精品久久 | 国产精品综合 | 91精品国产自产91精品 | 91.xxx.高清在线| 国产精品久久视频 | 亚洲第1页 | 视频在线一区二区 | 久久亚洲天堂 | 日韩欧美国产成人一区二区 | 久久精品国产一区二区电影 | 国精日本亚洲欧州国产中文久久 | 玖玖综合网 | 大陆毛片 | 伊人超碰| 一区二区手机在线 | 中文久久 | 一级成人免费 | 国产三级自拍 | 成人精品网站在线观看 | 免费av手机在线观看 | 成人一级片 | 色婷婷综合久色 | 亚洲欧美日韩电影 | 久久久久久九九 | 欧美成人在线免费视频 | 91黄色在线观看 | 一级毛片在线 | 久久精品国产99国产精品 | 国产高潮在线观看 | 日韩一区二区在线播放 | 交视频在线观看国产 | 黄色a视频| 成人亚洲在线观看 | 日本不卡一区二区三区在线观看 | 国产精品粉嫩白浆在线观看 | 亚洲成人福利 | 免费的av网站 | 亚洲一区二区在线 | 国产精品99久久久久久宅男 | 一二三四在线视频观看社区 | 91网站在线看| 美女主播精品视频一二三四 | 91精品久久久久久久久久小网站 | 亚洲精品久久 | 色婷婷综合在线 | 欧美区 日韩区 | 黄色一级片免费播放 | 成人视屏在线观看 | 91免费看片| 成人精品一区二区 | 91香蕉视频| 国产裸体永久免费视频网站 | 中文字幕国产一区 | 精品国产91久久 | 一级片在线观看网站 | 亚洲免费网站在线观看 | 亚洲 精品 综合 精品 自拍 | 91色视频在线观看 | 美女午夜影院 | 国产精品免费av | 99在线免费视频 | 久操综合| 美女扒开尿口来摸 | 国产精品一区二区三区在线看 | 天天干天操 | 久久久久久成人 | 国产免费看 | 亚洲av一级毛片 | 亚洲视频免费 | 亚洲天堂av网| 欧美全黄 | 午夜精品一区二区三区在线视频 | 亚洲欧美在线一区二区 | 亚洲不卡 | 国产精品久久久久久亚洲调教 | 国产网站在线 | 欧美精品在线一区 | 亚洲一区二区高清视频 | 91精品国产综合久久久久久丝袜 | 精品第一页| 欧美va天堂| 日韩av一区二区在线观看 | 欧美男男videos| 天天干人人干 | 国产精品久久久一区 | 黄色片网站在线看 | 伊人国产精品 | 神马久久久久久 | 国产高清自拍 | 日本成人福利视频 | 久久一二区 | 精品视频久久久 | 久久亚洲欧美日韩精品专区 | 国产精品极品美女在线观看免费 | 日韩一区二区三区精品 | 韩国精品免费视频 | 久色视频在线观看 | 亚洲性人人天天夜夜摸 | а√天堂资源中文最新版地址 | 欧美一区 | 高清一区二区三区 |