黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Oracle概念:過程、函數(shù)、程序包

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

之前學(xué)習(xí)的PL/SQL塊是匿名的,不能將其存儲(chǔ) target=_blank>存儲(chǔ)到數(shù)據(jù)庫(kù)中。

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

優(yōu)點(diǎn):

1. 可重用性:一旦命名并保存在數(shù)據(jù)庫(kù)中后,任何應(yīng)用都可以

2. 抽象和數(shù)據(jù)隱藏

3. 安全 target=_blank>安全性

過程

存儲(chǔ)過程就是命了名的PL/SQL塊,可以被賦予參數(shù),存儲(chǔ)在數(shù)據(jù)庫(kù)中,然后由另一個(gè)應(yīng)用或者PL/SQL例程調(diào)用。比如

CREATE PROCEDURE my_proc as

BEGIN

NULL;

END;

/

語法:

CREATE [OR REPLACE] PROCEDURE procedure_name (參數(shù))

IS | AS

[PRAGMA AUTONOMOUS_TRANACTION;] --聲明自主事務(wù)處理。

[本地變量聲明]

BEGIN

執(zhí)行語句部分

[EXCEPTION]

錯(cuò)誤處理部分

END[name];

/

CREATE OR REPLACE PROCEDURE my_proc as -- OR REPLACE

BEGIN

Dbms_output.put_line(‘Hello, world’);

END;

/

執(zhí)行存儲(chǔ)過程

set serveroutput on

begin

my_proc

end;

/

直接執(zhí)行:

execute my_proc

exec my_proc

權(quán)限:

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

[試驗(yàn)]

創(chuàng)建3個(gè)用戶

conn donny/donny

create user chris identified by chris;

此時(shí)不能連結(jié)數(shù)據(jù)庫(kù),不能創(chuàng)建過程

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建立一個(gè)過程

conn mark/mark

create procedure marks_proc as

begin

null;

end;

/

嘗試使用chris用戶執(zhí)行這個(gè)過程:

conn chris/chris

exec mark.marks.proc

授權(quán):

conn mark/mark

grant execute on marks_proc to chris

conn chris/chris

exec mark.marks_proc

嘗試使用sean用戶執(zhí)行這個(gè)過程:

conn sean/sean

exec mark.marks.proc

將execute 授予public用戶,使得所有用戶都可以執(zhí)行這個(gè)過程

conn mark/mark

grant execute on marks_proc to public;

conn sean/sean

exec mark.marks.proc

參數(shù):

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

IN 參數(shù)通過調(diào)用者傳入,只能由過程讀取,不能改變。是默認(rèn)的模式,可以具有默認(rèn)值。

OUT 參數(shù)有過程寫入。用于過程需要向調(diào)用者返回多條信息的時(shí)候。不能是具有默認(rèn)值的變量,也不能是常量,必須向OUT參數(shù)傳遞返回值。

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

IN參數(shù):

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;

/

這個(gè)時(shí)候并沒有執(zhí)行該過程,嘗試執(zhí)行

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;

/

這個(gè)時(shí)候并沒有執(zhí)行該過程,嘗試執(zhí)行

select * from t;

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

select * from t;

參數(shù)傳遞方法:

1. 使用名稱表示

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

2. 使用位置表示

exec insert_into_t (102, 202);

3. 使用混合表示

適用于有默認(rèn)值的情況,注意:OUT 和 IN OUT 參數(shù)不能有默認(rèn)值

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參數(shù):

set serveroutput on

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

OUT 參數(shù):

從過程向調(diào)用者返回值:

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

分析:

desc scott.emp

參數(shù):一個(gè)in, 兩個(gè)out

參數(shù)類型: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;

/

執(zhí)行該過程:

1. 使用匿名PL/SQL

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

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 中執(zhí)行

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

Variable name varchar2(10);

Variable sal number;

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

Print name;

Print sal;

Select :name, :sal from dual;

IN OUT 參數(shù):

可以用來傳入?yún)?shù),并從存儲(chǔ)過程返回值。

例子:輸入兩個(gè)數(shù),交換值

思路:通過一個(gè)臨時(shí)變量作為交換過程中的過渡

create or replace

procedure swap(

p1 in out number,

p2 in out number ) as

l_temp number; --局域變量的聲明,相當(dāng)于匿名塊中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;

/

關(guān)于自主事務(wù)處理: P197

我們?cè)?jīng)討論過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,調(diào)用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

說明事務(wù)處理可以跨越過程繼續(xù)執(zhí)行。

為了防止一個(gè)過程影響其他過程,可以將其標(biāo)記為自主的。這樣p2中的rollback將不會(huì)影響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; 函數(shù):

與過程相似,遵循了相同的規(guī)則。

參數(shù)傳遞:只能帶有in參數(shù),不能使用out, in out 參數(shù)

函數(shù)的主要特性是必須返回一個(gè)值。

語法:

CREATE [OR REPLACE] FUNCTION function_name (參數(shù))

RETURN datatype

IS | AS

[PRAGMA AUTONOMOUS_TRANACTION;] --聲明自主事務(wù)處理。

[本地變量聲明]

BEGIN

執(zhí)行語句部分

[EXCEPTION]

錯(cuò)誤處理部分

END[name];

/

返回值:

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

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

CREATE OR REPLACE

FUNCTION my_func

RETURN varchar2

As

Begin

Return ‘HELLO, WORLD’;

END;

/

調(diào)用函數(shù):

用戶必須要獲取返回值,所以調(diào)用時(shí),要聲明一個(gè)局域變量:

set serveroutput on

declare

l_str varchar2(100) := null;

begin

l_str := my_func;

dbms_output.put_line(l_str);

end;

/

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

Create or replace

Procedure show_it(p varchar2) as

Begin

Dbms_output.put_line(p);

End;

/

exec show_it(my_func);

練習(xí):

編寫一個(gè)函數(shù)ITE,實(shí)現(xiàn):boolean expression ? true_value: false_value

輸入一個(gè)表達(dá)式expression, IF正確,THEN輸出true_value;ELSE,輸出false_value

分析:3個(gè)in 參數(shù),一個(gè)boolean, 2個(gè)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’));

程序包:

是對(duì)PL/SQL類型,過程,函數(shù),游標(biāo),異常,變量,常量的封裝。

包括兩部分:規(guī)范和主體

規(guī)范:是程序包的公共接口,

主體:規(guī)范的實(shí)現(xiàn),以及私有例程、數(shù)據(jù)和變量。

語法:

CREATE OR REPLACE PACKAGE package_name

IS | AS

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

公用過程或函數(shù)的聲明;

END package_name;

/

CREATE OR REPLACE PACKAGE BODY package_name

IS | AS

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

公用過程或函數(shù)的實(shí)現(xiàn);

END package_name

規(guī)范:

規(guī)范是程序包的接口,規(guī)范中定義的所有內(nèi)容都可以由調(diào)用者使用(當(dāng)然需要具有EXECUTE特權(quán)),比如規(guī)范中定義的過程函數(shù)可以被執(zhí)行,類型可以被訪問,變量可以被引用。

例子:使用兩個(gè)過程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;

/

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

這個(gè)時(shí)候如果試圖使用這個(gè)包,會(huì)報(bào)錯(cuò)

exec employee_pkg.print_ename(1234);

主體:

程序包是過程,函數(shù)的具體實(shí)現(xiàn)部分,實(shí)現(xiàn)規(guī)范中定義的接口。

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;

/

執(zhí)行:

set serveroutput on

exec employee_pkg.print_ename(1234);

exec employee_pkg.print_ename(7782);

exec employee_pkg.print_sal(7782);

過程和函數(shù)的重載:

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

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

procedure foo(p1 varchar2);

procedure foo(p1 number);

procedure foo(p1 varchar2, p2 number);

procedure foo(p1 varchar2, p2 varchar2);

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

procedure foo(p1 varchar2);

procedure foo(p2 varchar2);

procedure foo(p1 in varchar2);

procedure foo(p1 in out varchar2);

例如

desc dbms_output

試驗(yàn):重載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;

/

該例子只能實(shí)現(xiàn)交換數(shù)值,我們將其包裝,并進(jìn)行重載,使其也可以交換varchar2 和 date

(1) 建立規(guī)范

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) 測(cè)試結(jié)果:

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;

/

程序包中的游標(biāo):

在PL/SQL塊中,return 子句是游標(biāo)的可選部分。

在規(guī)范中聲明游標(biāo)的時(shí)候,必須存在與游標(biāo)關(guān)聯(lián)的return 子句,表示從游標(biāo)獲取的數(shù)據(jù)元素類型。

并且游標(biāo)的select 子句只出現(xiàn)在主體中,不出現(xiàn)在規(guī)范中。

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

限定函數(shù)的純度級(jí)別

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;

/

數(shù)據(jù)字典:

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認(rèn)識(shí)的格式,保護(hù)智力成果

wrap iname=utilities.sql

生成utilities.plb

規(guī)范部分:

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';;

相關(guān)文章:
主站蜘蛛池模板: 国产寡妇亲子伦一区二区三区 | 总裁高h震动喷水双性 | 丁香婷婷色 | 亚洲欧洲精品成人久久曰 | 天天射天天干天天色 | 国产一级片在线播放 | 国产精品国产高清国产av | 伊人色综合久久久天天蜜桃 | 无码aⅴ精品一区二区三区 45分钟免费真人视频 | 蜜桃视频在线观看www | 不卡av网站| 亚洲国产成人久久综合电影 | xfplay2023成人资源站 | 亚洲欧美不卡 | 波多野结衣免费视频观看 | 性色av一区二区三区 | 国产精品自拍视频 | 夜夜爽妓女8888888视频 | 亚洲精选中文字幕 | 中国老妇xxxx性开放 | 国产视频一二三四区 | 精品福利一区二区 | 黑巨人与欧美精品一区 | 亚洲欧美一区二区三区四区 | 色翁荡熄又大又硬又粗又视频 | 久久中文字幕人妻熟av女 | 中文字幕一区二区三区四区免费看 | 精品国产一区av天美传媒 | 一区二区三区国产视频 | 国产精品20p| 国产伦理无套进入 | 一级做a爱视频 | 久久精品www人人爽人人 | 日韩av高清在线观看 | 夜夜嗨国产精品 | 欧美日韩一区二区在线视频 | 91激情在线观看 | 91亚洲成人| 久久综合资源 | 国产免费久久久久久无码 | 国产喷水福利在线视频 | 免费a级毛片出奶水欧美 | 久久免费看少妇高潮 | 久久精品久久综合 | eeuss一区二区三区 | 日本福利社 | 日韩不卡高清视频 | 日本三级黄色大片 | 国产精品视频全国免费观看 | 97精品国产97久久久久久免费 | 国产日韩一区二区三区 | 97色伦久久x88av | 黄片毛片视频 | 国产精品国产三级国产aⅴ中文 | 看全色黄大色黄大片大学生 | 全部a∨一极品视觉盛宴 | 日韩免费无码一区二区三区 | 国内精品久久久久久无码不卡 | 天堂亚洲网 | 无码精品国产va在线观看 | 寂寞少妇让水电工爽了一小说 | 天海翼一区二区三区四区演员表 | 四虎永久在线精品免费观看网站 | 欧美日韩精品区 | 国产乱子伦视频在线播放 | 日韩欧美不卡视频 | 性精品| 国产亚洲成av人片在线观黄桃 | 久草在线这里只有精品 | 国产传媒一区 | 狠操av| 国产 日韩 欧美 一区 | 色一情一交一乱一区二区 | 午夜黄色网 | 亚洲人成网站日本片 | 狠狠躁日日躁夜夜躁2022麻豆 | 丁香五月亚洲综合在线 | 99热国内精品 | 国产不卡在线播放 | 少妇愉情理仑片高潮日本 | 好男人社区www在线观看 | 男人狂躁女人爽的尖叫的免费视频 | 最近最新中文字幕高清免费 | 国产麻豆一精品一av一免费 | 网友自拍第一页 | 一级久久久久久久 | xxx国产| 高潮毛片又色又爽免费 | 99久久久国产精品免费调教网站 | 欧美一级黄色片 | 91香蕉一区二区三区在线观看 | 在线免费观看亚洲视频 | 激情av网站| 日本aⅴ在线观看 | 亚洲妇女捆绑hd | 国产精品久久久久久久久久软件 | 777亚洲精品乱码久久久久久 | 99草在线视频 | 大桥未久女教师在线观看bd22 | 日本高清视频免费看 | 色婷婷91| 韩国r级hd中文字幕 韩国r级大尺度激情做爰外出 | 少妇被粗大的猛进出69影院 | 香蕉视频免费网站 | ass大乳尤物肉体pics | 久久成人免费网 | 免费看av网 | 国产黄色精品网站 | 国产专区视频 | 五月婷婷影院 | 欧美性猛交内射兽交老熟妇 | 麻豆国产一区二区三区四区 | 久久黄色片网站 | 毛片网在线| 国产精品人成在线观看 | 国产成人久久精品77777综合 | 成人免费看www网址入口 | 影音先锋国产精品 | 日本三级aaa | 无码人妻av免费一区二区三区 | 一区二区高清视频在线观看 | 国产人伦精品一区二区三区 | 性色av一区二区三区无码 | 99色综合网 | 青草99 | 天天综合网在线观看 | 99久久人人爽亚洲精品美女 | 亚洲字幕av一区二区三区四区 | 天天操操操| 午夜小视频在线播放 | 色屁屁ts人妖系列二区 | 91精品久久久久久久久中文字幕 | 精品久久久久久亚洲中文字幕 | 夜夜草网站 | 国产欧洲精品亚洲午夜拍精品 | 精品乱码一区二区三区四区 | 精品在线一区 | 91久久婷婷 | 国产美女无遮挡免费 | 国产精品国产三级国产有见不卡 | 成人午夜一区 | 97婷婷狠狠成为人免费视频 | 五月婷婷在线视频 | 亚洲狠狠婷婷综合久久 | 激情五月综合色婷婷一区二区 | 午夜激情视频在线 | 久艹av| 国产乱子伦视频在线观看 | 精品国产第一国产综合精品 | 中国女人内谢69xxxxxa片 | 国产婷婷成人久久av免费高清 | 337p日本大胆噜噜噜鲁 | 成人激情视频网 | 四虎影视永久在线精品 | 中文字幕国产精品 | 新国产视频 | 日本人和亚洲人zjzjhd | 欧美精品首页 | 99精品国产免费久久久久久按摩 | 亚洲无av | 亚洲欧美一区二区三区四区五区 | 天天在线免费视频 | 不卡视频一区二区三区 | 污的视频在线观看 | 国产精品亚洲专区无码不卡 | h色视频在线观看 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 国产精品综合色区在线观看 | 欧美老妇与zozoz0交 | 538国产精品视频一区二区 | 无码精品人妻一区二区三区免费看 | 一本色道久久加勒比精品 | av日韩精品 | 国产肉丝袜在线观看 | 国产精品伦理久久久久 | 51久久精品夜色国产麻豆 | 偷拍男女做爰视频免费 | 激情春色网 | 超碰综合网 | 红桃视频一区 | 国产成人精品在线视频 | 欧美日韩妖精视频 | 粗壮挺进人妻水蜜桃成熟 | 妇欲欢公爽公妇高h苏晴 | 无遮无挡爽爽免费毛片 | 青青操视频在线 | 黄片毛片免费在线观看 | 国产性生交xxxxx无码 | 免费a级毛片大学生免费观看 | 99国产精品一区 | 99久久婷婷国产综合精品免费 | 人妻体内射精一区二区 | 国产黄a三级三级三级 | 成人在线观看亚洲 | 成人人人人人欧美片做爰 | 中文字幕免费在线看线人动作大片 | 国产天堂视频在线观看 | 麻豆国产在线视频 | 男人女人做爽爽18禁网站 | 中文字幕一区日韩精品 | 成人精品一区二区三区在线观看 | 国产农村老太xxxxhdxx | 亚洲欧美日本国产高清 | 国偷自产一区二区三区在线观看 | 夜夜嗨av涩爱av牛牛影视 | 亚洲欧美综合区自拍另类 | 欧美精品中文字幕亚洲专区 | 精产国品一二三产区区别在线观看 | 人妻无码一区二区三区四区 | 亚洲五十路 | 女同精品一区二区三区在线播放器 | 美女国产在线 | 天天狠天天狠天天鲁 | 成人无码精品1区2区3区免费看 | 免费视频福利 | 中文字幕亚洲视频 | 欧美日韩亚洲天堂 | 亚洲日本va中文字幕 | 免费黄色大片 | 在线天堂av| 成人夜晚视频 | 五月婷婷在线观看 | 亚洲男女视频 | 欧美日本一二三区 | 理论视频在线观看 | 日韩欧美资源 | 婷婷午夜精品久久久久久性色av | 18久久久| 国产人妻精品午夜福利免费 | 欧美亚洲三级 | 中文字幕高清av | 免费无码a片一区二三区 | 三级毛片在线看 | 中文国产成人精品久久不卡 | 国产精品免费福利 | 免费观看又色又爽又黄动态 | 精品无码中文视频在线观看 | 玖玖在线视频 | 国产精品―色哟哟 | 精品日本一区二区三区在线观看 | www久久久久久久 | 欧美另类变人与禽xxxxx | 人妻聚色窝窝人体www一区 | 日本aaaa级毛片在线看 | 污视频网站免费 | 亚洲少妇自拍 | 涩五月婷婷 | 国产内射合集颜射 | 国产爆乳无码av在线播放 | 久久久国产精品久久久 | 欧美日韩精品一二三区 | 国产黄大片在线观看画质优化 | 男人天堂视频在线 | 国产一区二区中文字幕 | 亚洲色图婷婷 | 亚洲最大在线观看 | 久久久精品国产一区二区三区 | 视频日韩| 老女人毛片50一60岁 | 国产黄a三级三级三级老年人 | 免费观看av | 九一国产在线观看 | 成人影片网址 | 叼嘿视频在线免费观看 | 狠狠躁夜夜躁av网站中文字幕 | 青青青在线免费观看 | 国产免费色视频 | 日韩精品视频免费在线观看 | 成人国产在线观看 | 国产网红主播一区二区三区 | 国产在线拍揄自揄视精品按摩 | 国产人妖ts重口系列网站观看 | 国严产品自偷自偷在线观看 | 久久爽久久爽久久av东京爽 | 国产经典av | 久久99精品久久久久久无毒不卡8 | 男女一边摸一边做爽视频 | 日本无遮羞教调屁股视频网站 | 天天爱天天插 | 夜夜嗨av一区二区三区中文字幕 | 久久精品一本到东京热 | 网曝91综合精品门事件在线 | 毛茸茸熟妇丰满张开腿呻吟性视频 | 欧美日韩国产免费一区二区三区 | 国产精品极品白嫩在线 | 国产精品三区在线观看 | 欧美色射 | 国产成人免费视频 | 亚洲精品午夜一区人人爽 | 国产丰满精品伦一区二区三级视频 | 91桃色国产在线播放 | 狠狠躁日日躁夜夜躁老司机 | 337p粉嫩大胆噜噜噜噜69影视 | 91成人免费看片 | 高清无码一区二区在线观看吞精 | 三级视频在线观看 | 高清日韩欧美 | 麻豆成人91精品二区三区 | 黄色字幕网| 精品国产一区二区三区免费 | 高h纯肉无码视频在线观看 亚洲国产成人av毛片大全 | 美女a视频 | 久久综合九色综合欧洲98 | 日韩精品第三页 | 日本一本在线观看 | 可以观看的av| 强迫凌虐淫辱の牝奴在线观看 | 亚洲一区二区三区成人 | 亚洲 精品 主播 自拍 | 婷婷综合亚洲 | 18禁美女裸体免费网站 | 色久综合视频 | 日韩成人无码影院 | 亚洲精品一区二区三区婷婷月 | 免费最爽乱淫无遮挡 | 日韩一区二区视频在线 | 欧美性淫爽ww久久久久无 | 正在播放酒店约少妇高潮 | 五月狠狠亚洲小说专区 | 国产视频麻豆 | 国产乱人伦精品免费 | 久久精品夜色噜噜亚洲a∨ 久久精品一二三 | 国产在线一区二区 | 日韩资源在线 | 国产九九九九九九九a片 | 无码精品人妻一区二区三区影院 | 国产黄色一级大片 | 男女无遮挡xx00动态图120秒 | www亚洲精品| 青青草伊人 | 国产同性野外打野战 | 中文字幕人妻第一区 | 夜夜夜高潮夜夜爽夜夜爰爰 | 中国av在线 | 久久精品精品 | 国产精品一区二区三区免费视频 | 久久九九国产精品 | 视频在线观看91 | 亚洲一区二区三区成人 | 亚洲精品乱码久久观看网 | 少妇高潮淫片免费观看 | 香蕉视频黄在线观看 | 美日韩中文字幕 | 少妇做爰免费视频了 | 一个色影院 | 福利视频一区 | 免费又黄又粗又爽大片69 | 国产三级国产精品国产专区50 | 国产精品爱久久久久久久 | 中文免费av | 欧洲亚洲一区 | 国产区精品在线观看 | 污视频网址在线观看 | 成人1啪啪 | 99久久久成人国产精品 | 国产精品久久久久久久久久久久久久久久久久 | 日韩免费视频一区二区 | 人人妻人人澡av天堂香蕉 | 99在线免费视频 | 黄色av网页 | 日本中文字幕精品 | 超碰2019| 理论在线视频 | 日韩福利小视频 | 波多野结衣办公室33分钟 | 中文字幕――色哟哟 | 亚洲精品一区中文字幕乱码 | 欧美又大又硬又粗bbbbb | 国产精品成人一区二区三区 | 亚洲码无人客一区二区三区 | 欧美a一级 | 99久久精品费精品国产风间由美 | 欧美三级图片 | 成人欧美一区二区三区黑人孕妇 | 国产精品51麻豆cm传媒 | 久久免费播放视频 | 白嫩少妇bbw撒尿视频 | 91热爆视频| 中文字幕熟妇人妻在线视频 | 国产mv欧美mv日产mv免费 | 黑人巨茎美女高潮视频 | 国产又黄又爽又色的免费视频白丝 | 青青草97国产精品免费观看 | 蜜桃网站入口在线进入 | 午夜草逼| 国产精品毛片一区视频播 | a v在线视频 | 国产精品88久久久久久妇女 | 国产极品探花一区二区三区 | 国产成人91 | 少妇喷潮明星 | 欧美成人高清视频在线观看 | 少妇玉梅抽搐呻吟 | a级黄色网 | 久久精品国产99国产精品 | 久久久久久久久久久久久女国产乱 | 九九综合va免费看 | 日韩高清不卡在线 | 国产黄色大片视频 | 国产裸体歌舞一区二区 | 成人性生活免费看 | 国产做爰xxx18在线观看网站 | 欧美成人一区在线观看 | 国产浮力视频 | www亚洲天堂com | 97久久国产亚洲精品超碰热 | 苍井空浴缸大战猛男120分钟 | 4399理论片午午伦夜理片 | 中文字幕日韩精品有码视频 | 亚洲精品av天天看1080p | 国产欧美性成人精品午夜 | 中文字幕+乱码+中文字幕明步 | 亚洲欧美成人在线 | 一本大道一区二区 | 无码人妻丰满熟妇区五十路百度 | 男女啪啪做爰高潮无遮挡 | 可以免费看的毛片 | 国产女人爽到高潮a毛片 | 国产精品99久久不卡 | 超碰在线观看99 | 色诱视频在线观看 | 91狠狠躁少妇 | 91女女互慰吃奶在线 | 精品水蜜桃久久久久久久 | 久久综合给合久久狠狠狠97色 | 青青草视频在线观看免费 | 国产欧美一区二区精品性 | 久热国产精品视频一区二区三区 | 又湿又紧又大又爽a视频 | 仁科百华av解禁在线播放 | 欧美精品1区2区3区 欧美精品91爱爱 | 五月天激情国产综合婷婷婷 | 男人激烈吮乳吃奶视频 | 国产亚洲精品久久久优势 | 欧洲精品视频在线 | 日本大片在线看黄a∨免费 国产欧美性成人精品午夜 婷婷国产成人精品视频 | 日本一级理论片在线大全 | 亚洲中文字幕在线第六区 | www.xxx国产| 91爱| 香蕉久操 | 中文字幕欧美人妻精品一区 | 韩日av片 | 日韩黄色毛片 | 国产crm系统91在线 | 青草av久久免费一区 | 无码人妻精品一区二区在线视频 | 天天鲁夜夜免费观看视频 | 国产裸体舞一区二区三区 | 夜色88v精品国产亚洲 | 那里有黄色网址 | 长篇h版少妇沉沦交换 | 失禁大喷潮在线播放 | 高潮久久久久久 | 国产精品亚洲日韩欧美色窝窝色欲 | 成在线人av免费无码高潮喷水 | 黄色第一网站 | 亚洲性一区 | 国产2 | 国产人妻一区二区三区四区五区六 | 色播导航| 丰满大乳一级淫片免费播放 | 国产精品对白交换视频 | 中文字幕乱码亚洲无线三区 | 18禁美女裸身无遮挡免费网站 | 国产性夜夜春夜夜爽 | 国产91色 | 国产男男无套激情11069 | 免费人成网站 | 国产网站av| 色综合天| 中文字幕日本精品一区二区三区 | 国产又粗又猛又大爽又黄老大爷 | 天天草天天射 | 天天综合天天做 | 懂色av色香蕉一区二区蜜桃 | 北条麻妃精品久久中文字幕 | 亚洲精品视频在线 | 暖暖在线日本免费高清最新版 | 香港曰本韩国三级网站 | 97人人澡人人深人人添 | 黄色片在线免费看 | 关之琳三级全黄做爰在线观看 | 国产精品嫩草影院入口日本一区二 | 福利所第一导航福利 | 国产乱人伦真实精品视频 | 欧美影院在线 | 免费公开在线视频 | 麻花豆传媒mv在线观看 | 天堂资源中文 | 雨宫琴音av一区在线播放 | 国产精品无套呻吟在线 | 成人午夜sm精品久久久久久久 | www.在线国产 | 91性高湖久久久久久久久_久久99 | 国产真人做爰视频免费 | 色婷婷成人网 | 国产周晓琳在线另类视频 | 日韩av在线观看免费 | 日本中文字幕一区二区 | 在线看片人成视频免费无遮挡 | 亚洲国产精品久久精品怡红院 | 夫妻免费无码v看片 | 波多野结衣大战黑人8k经典 | 成人片黄网站a毛片免费 | 国产女人与拘做视频免费 | 中文字幕亚洲乱码熟女一区二区 | 9久久久| 亚洲黄在线观看 | 国产尤物视频 | 97资源共享在线视频 | 日本三级中文字幕在线观看 | 男人和女人尻逼 | 天天躁夜夜躁天干天干2020 | 草久久| 国产日韩欧美视频 | 亚洲欧美又粗又长久久久 | 女性向av片在线观看免费 | 久久中文字幕无码专区 | 99精品一级欧美片免费播放 | 国产网站在线 | 日本在线二区 | 中文字幕丰满乱子伦无码专区 | 国产成人无遮挡在线视频 | 国产精品尤物yw在线观看 | 日本一二三区视频在线 | 国产无套粉嫩白浆在线 | 在线观看成人无码中文av天堂 | 欧美在线一 | 色婷婷久久久久swag精品 | 国产午夜久久久 | 无码人妻精品一区二区三区不卡 | 95视频在线| 久久午夜伦鲁片免费无码 | 搡女人真爽免费视频大全 | 色综合色| 久久99精品国产自在现线小黄鸭 | 午夜激情视频在线播放 | 成人一区视频 | 婷婷丁香国产 | 日韩国产二区 | 亚洲国产精品一区二区第一页 | 欧美黑人狂躁日本寡妇 | 国产小视频在线播放 | 色一情一乱一伦麻豆 | 国产成人免费9x9x人网站视频 | 白人と日本人の交わりビデオ | 亚洲最大成人综合网 | 国产普通话对白刺激 | 91九色视频 | 国产盗摄xxxx视频xxxx | 国产传媒av | 国产精品99精品无码视亚 | 日韩成人免费av | 日韩av一区在线观看 | 国产经典一区 | 图片区小说区区国产明星 | 国产人妻大战黑人第1集 | 久久综合久久自在自线精品自 | 富婆如狼似虎找黑人老外 | 一本一本久久a久久精品综合不卡 | 欧美一区久久久 | 亚洲女成人图区 | 久久久99国产精品免费 | 午夜视频在线观看一区二区 | 不用播放器的av网站 | 国产精品一区二区三区久久 | 亚洲久悠悠色悠在线播放 | 亚洲成av人在线视 | 久久久久女 | 无遮挡又爽又刺激的视频 | 99热久久成人免费频精品2 | 久久久九九九九 | 北条麻妃一二三区 | 国产精久久一区二区三区 | 全部孕妇毛片丰满孕妇孕交 | 成人午夜网站 | 精品一区二区三区四区五区六区 | 亚洲精品午夜国产va久久成人 | 中文学幕专区 | 亚洲第一页视频 | 99久久人人爽亚洲精品美女 | 国产xx视频| 日韩免费看 | 五月丁香六月综合缴情在线 | 性生活视频网站 | 狠狠色丁香婷婷综合 | 国产成人精品一区二区三区视频 | 欧美比基尼| 日日摸天天做天天添天天欢 | 国产山村乱淫老妇av | 精品在线免费观看视频 | 免费人成自慰网站 | 少妇高潮惨叫久久久久电影69 | 69产性猛交xxxx乱大交 | 一区二区小视频 | 精品无码国产av一区二区三区 | 欧美一级黄色录像 | 亚洲深夜福利 | 无码精品久久久久久人妻中字 | 6080亚洲精品一区二区 | 大尺度舌吻呻吟声 | 亚洲s色大片在线观看 | 疯狂做受xxxx高潮视频免费 | 欧美日韩国产精品激情在线播放 | 99久久精品免费看国产 | 爆操欧美美女 | 可以免费看的av网站 | 亚洲国产精品午夜久久久 | 五月天av影院 | 一级录像免费录像性高湖 | a级毛片蜜桃成熟时2在线播放 | 亚洲天堂av免费在线观看 | 91麻豆免费视频 | 日本黄色网络 |