亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

SQL數(shù)據(jù)庫存儲過程示例解析

2024-08-31 01:03:47
字體:
供稿:網(wǎng)友
這篇文章主要針對SQL數(shù)據(jù)庫存儲過程示例進行解析,感興趣的小伙伴們可以參考一下
 

什么是存儲過程:存儲過程可以說是一個記錄集吧,它是由一些T-SQL語句組成的代碼塊,這些T-SQL語句代碼像一個方法一樣實現(xiàn)一些功能(對單表或多表的增刪改查),然后再給這個代碼塊取一個名字,在用到這個功能的時候調(diào)用他就行了。

存儲過程的好處:

1.由于數(shù)據(jù)庫執(zhí)行動作時,是先編譯后執(zhí)行的。然而存儲過程是一個編譯過的代碼塊,所以執(zhí)行效率要比T-SQL語句高。

2.一個存儲過程在程序在網(wǎng)絡(luò)中交互時可以替代大堆的T-SQL語句,所以也能降低網(wǎng)絡(luò)的通信量,提高通信速率。

3.通過存儲過程能夠使沒有權(quán)限的用戶在控制之下間接地存取數(shù)據(jù)庫,從而確保數(shù)據(jù)的安全。

小結(jié):總之存儲過程是好東西,在做項目時屬于必備利器,下面介紹存儲過程的基本語法。

存儲過程的語法和參數(shù)講解

存儲過程的一些基本語法:

--------------創(chuàng)建存儲過程-----------------CREATE PROC [ EDURE ] procedure_name [ ; number ]  [ { @parameter data_type }    [ VARYING ] [ = default ] [ OUTPUT ]  ] [ ,...n ][ WITH  { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ][ FOR REPLICATION ]AS sql_statement [ ...n ]--------------調(diào)用存儲過程-----------------EXECUTE Procedure_name '' --存儲過程如果有參數(shù),后面加參數(shù)格式為:@參數(shù)名=value,也可直接為參數(shù)值value--------------刪除存儲過程-----------------drop procedure procedure_name  --在存儲過程中能調(diào)用另外一個存儲過程,而不能刪除另外一個存儲過程

創(chuàng)建存儲過程的參數(shù):
1.procedure_name :存儲過程的名稱,在前面加#為局部臨時存儲過程,加##為全局臨時存儲過程。

2.; number:是可選的整數(shù),用來對同名的過程分組,以便用一條 DROP PROCEDURE 語句即可將同組的過程一起除去。例如,名為 orders 的應(yīng)用程序使用的過程可以命名為 orderproc;1、orderproc;2 等。DROP PROCEDURE orderproc 語句將除去整個組。如果名稱中包含定界標(biāo)識符,則數(shù)字不應(yīng)包含在標(biāo)識符中,只應(yīng)在 procedure_name 前后使用適當(dāng)?shù)亩ń绶?/p>

3.@parameter: 存儲過程的參數(shù)。可以有一個或多個。用戶必須在執(zhí)行過程時提供每個所聲明參數(shù)的值(除非定義了該參數(shù)的默認值)。存儲過程最多可以有 2.100 個參數(shù)。 
使用 @ 符號作為第一個字符來指定參數(shù)名稱。參數(shù)名稱必須符合標(biāo)識符的規(guī)則。每個過程的參數(shù)僅用于該過程本身;相同的參數(shù)名稱可以用在其它過程中。默認情況下,參數(shù)只能代替常量,而不能用于代替表名、列名或其它數(shù)據(jù)庫對象的名稱。有關(guān)更多信息,請參見 EXECUTE。

4.data_type:參數(shù)的數(shù)據(jù)類型。所有數(shù)據(jù)類型(包括 text、ntext 和 image)均可以用作存儲過程的參數(shù)。不過,cursor 數(shù)據(jù)類型只能用于 OUTPUT 參數(shù)。如果指定的數(shù)據(jù)類型為 cursor,也必須同時指定 VARYING 和 OUTPUT 關(guān)鍵字。有關(guān) SQL Server 提供的數(shù)據(jù)類型及其語法的更多信息,請參見數(shù)據(jù)類型。 
說明 對于可以是 cursor 數(shù)據(jù)類型的輸出參數(shù),沒有最大數(shù)目的限制。

5.VARYING: 指定作為輸出參數(shù)支持的結(jié)果集(由存儲過程動態(tài)構(gòu)造,內(nèi)容可以變化)。僅適用于游標(biāo)參數(shù)。

6.default: 參數(shù)的默認值。如果定義了默認值,不必指定該參數(shù)的值即可執(zhí)行過程。默認值必須是常量或 NULL。如果過程將對該參數(shù)使用 LIKE 關(guān)鍵字,那么默認值中可以包含通配符(%、_、[] 和 [^])。

7.OUTPUT :表明參數(shù)是返回參數(shù)。該選項的值可以返回給 EXEC[UTE]。使用 OUTPUT 參數(shù)可將信息返回給調(diào)用過程。Text、ntext 和 image 參數(shù)可用作 OUTPUT 參數(shù)。使用 OUTPUT 關(guān)鍵字的輸出參數(shù)可以是游標(biāo)占位符。

8.RECOMPILE: 表明 SQL Server 不會緩存該過程的計劃,該過程將在運行時重新編譯。在使用非典型值或臨時值而不希望覆蓋緩存在內(nèi)存中的執(zhí)行計劃時,請使用 RECOMPILE 選項。

9.ENCRYPTION: 表示 SQL Server 加密 syscomments 表中包含 CREATE PROCEDURE 語句文本的條目。使用 ENCRYPTION 可防止將過程作為 SQL Server 復(fù)制的一部分發(fā)布。 說明 在升級過程中,SQL Server 利用存儲在 syscomments 中的加密注釋來重新創(chuàng)建加密過程。

10.FOR REPLICATION :指定不能在訂閱服務(wù)器上執(zhí)行為復(fù)制創(chuàng)建的存儲過程。.使用 FOR REPLICATION 選項創(chuàng)建的存儲過程可用作存儲過程篩選,且只能在復(fù)制過程中執(zhí)行。本選項不能和 WITH RECOMPILE 選項一起使用。

11.AS :指定過程要執(zhí)行的操作。

12.sql_statement :過程中要包含的任意數(shù)目和類型的 Transact-SQL 語句。但有一些限制。

小結(jié):看過這些基本語法后,下面我就根據(jù)語法創(chuàng)建各式的存儲過程。

 創(chuàng)建存儲過程

 SQL數(shù)據(jù)庫,存儲過程

針對上面的表,我使用存儲過程對它做一些操作:

1. 只返回單一記錄集的存儲過程 

-------------創(chuàng)建名為GetUserAccount的存儲過程----------------create Procedure GetUserAccountasselect * from UserAccountgo-------------執(zhí)行上面的存儲過程----------------exec GetUserAccount

結(jié)果:相當(dāng)于運行 select * from UserAccount 這行代碼,結(jié)果為整個表的數(shù)據(jù)。

2.沒有輸入輸出的存儲過程 

-------------創(chuàng)建名為GetUserAccount的存儲過程----------------create Procedure inUserAccountasinsert into UserAccount (UserName,[PassWord],RegisterTime,RegisterIP) values(9,9,'2013-01-02',9)go-------------執(zhí)行上面的存儲過程----------------exec inUserAccount

結(jié)果:相當(dāng)于運行 insert into UserAccount (UserName,[PassWord],RegisterTime,RegisterIP) values(9,9,'2013-01-02',9) 這行代碼。

3.有返回值的存儲過程 

-------------創(chuàng)建名為GetUserAccount的存儲過程----------------create Procedure inUserAccountReasinsert into UserAccount (UserName,[PassWord],RegisterTime,RegisterIP) values(10,10,'2013-01-02',10)return @@rowcountgo-------------執(zhí)行上面的存儲過程----------------exec inUserAccountRe

解釋:這里的@@rowcount為執(zhí)行存儲過程影響的行數(shù),執(zhí)行的結(jié)果是不僅插入了一條數(shù)據(jù),還返回了一個值即 return value =1  ,這個可以在程序中獲取,稍后在c#調(diào)用存儲過程中會有說到。

4.有輸入?yún)?shù)和輸出參數(shù)的存儲過程 

-------------創(chuàng)建名為GetUserAccount的存儲過程----------------create Procedure GetUserAccountRe@UserName nchar(20),@UserID int outputasif(@UserName>5)select @UserID=COUNT(*) from UserAccount where UserID>25elseset @UserID=1000go-------------執(zhí)行上面的存儲過程----------------exec GetUserAccountRe '7',null

解釋:@UserName為輸入?yún)?shù),@UserID為輸出參數(shù)。 運行結(jié)果為@userID為COOUT(*)即 =1。

5. 同時具有返回值、輸入?yún)?shù)、輸出參數(shù)的存儲過程 

-------------創(chuàng)建名為GetUserAccount的存儲過程----------------create Procedure GetUserAccountRe1@UserName nchar(20),@UserID int outputasif(@UserName>5)select @UserID=COUNT(*) from UserAccount where UserID>25elseset @UserID=1000return @@rowcountgo-------------執(zhí)行上面的存儲過程----------------exec GetUserAccountRe1 '7',null

結(jié)果:@userID為COOUT(*)即 =1,Retun Value=1。

6.同時返回參數(shù)和記錄集的存儲過程 

-------------創(chuàng)建名為GetUserAccount的存儲過程----------------create Procedure GetUserAccountRe2@UserName nchar(20),@UserID int outputasif(@UserName>5)select @UserID=COUNT(*) from UserAccount where UserID>25elseset @UserID=1000select * from UserAccountreturn @@rowcountgo-------------執(zhí)行上面的存儲過程----------------exec GetUserAccountRe2 '7',null

結(jié)果:返回執(zhí)行 select * from UserAccount 這句代碼的結(jié)果集,同時@userID為COOUT(*)即 =1,Retun Value=9。

7.返回多個記錄集的存儲過程 

-------------創(chuàng)建名為GetUserAccount的存儲過程----------------create Procedure GetUserAccountRe3asselect * from UserAccountselect * from UserAccount where UserID>5go-------------執(zhí)行上面的存儲過程----------------exec GetUserAccountRe3

結(jié)果:返回兩個結(jié)果集,一個為 select * from UserAccount,另一個為 select * from UserAccount where UserID>5 。

小結(jié):上面我們創(chuàng)建了各式的存儲過程,下面看我們在c#中怎樣調(diào)用這些存儲過程。

C#調(diào)用存儲過程

這里調(diào)用的存儲過程為上面我寫的那些各式各樣的存儲過程。

public partial class ProcedureTest : System.Web.UI.Page  {    public static string conn = ConfigurationManager.ConnectionStrings["StuRelationDBConnectionString"].ConnectionString;    public SqlConnection con = new SqlConnection(conn);    protected void Page_Load(object sender, EventArgs e)    {      runGetUserAccountRe3();    }    //只返回單一記錄集的存儲過程GetUserAccount    public void runGetUserAccount()    {      SqlDataAdapter dp = new SqlDataAdapter(common("GetUserAccount"));      DataSet ds = new DataSet();      // 填充dataset       dp.Fill(ds);      rpt.DataSource = ds;      rpt.DataBind();    }    //沒有輸入輸出的存儲過程inUserAccount    public void runinUserAccount()    {            con.Open();      Label1.Text = common("inUserAccount").ExecuteNonQuery().ToString();      con.Close();    }    //有返回值的存儲過程inUserAccountRe    public void runinUserAccountRe()    {      // 創(chuàng)建參數(shù)       SqlCommand cmd = common("inUserAccountRe");      IDataParameter[] parameters = {          new SqlParameter("rval", SqlDbType.Int,4)        };      // 將參數(shù)類型設(shè)置為 返回值類型       parameters[0].Direction = ParameterDirection.ReturnValue;      // 添加參數(shù)       cmd.Parameters.Add(parameters[0]);      con.Open();      // 執(zhí)行存儲過程并返回影響的行數(shù)       Label1.Text = cmd.ExecuteNonQuery().ToString();      con.Close();      // 顯示影響的行數(shù)和返回值       Label1.Text += "-" + parameters[0].Value.ToString();    }    //有輸入?yún)?shù)和輸出參數(shù)的存儲過程    public void runGetUserAccountRe()    {      SqlCommand cmd = common("GetUserAccountRe");      // 創(chuàng)建參數(shù)       IDataParameter[] parameters = {          new SqlParameter("@UserName", SqlDbType.NChar,20) ,          new SqlParameter("@UserID", SqlDbType.Int) ,       };      // 設(shè)置參數(shù)類型       parameters[0].Value = "7";       parameters[1].Direction = ParameterDirection.Output; // 設(shè)置為輸出參數(shù)       // 添加參數(shù)       cmd.Parameters.Add(parameters[0]);      cmd.Parameters.Add(parameters[1]);      con.Open();      // 執(zhí)行存儲過程并返回影響的行數(shù)       Label1.Text = cmd.ExecuteNonQuery().ToString();      con.Close();            // 顯示影響的行數(shù)和輸出參數(shù)       Label1.Text += "-" + parameters[1].Value.ToString();          }    //同時具有返回值、輸入?yún)?shù)、輸出參數(shù)的存儲過程GetUserAccountRe1    public void runGetUserAccountRe1()    {      SqlCommand cmd = common("GetUserAccountRe1");      // 創(chuàng)建參數(shù)       IDataParameter[] parameters = {          new SqlParameter("@UserName", SqlDbType.NChar,20) ,          new SqlParameter("@UserID", SqlDbType.Int) ,         new SqlParameter("rval", SqlDbType.Int,4)        };      // 設(shè)置參數(shù)類型       parameters[0].Value = "7";      parameters[1].Direction = ParameterDirection.Output; // 設(shè)置為輸出參數(shù)       parameters[2].Direction = ParameterDirection.ReturnValue; //設(shè)置為返回值      // 添加參數(shù)       cmd.Parameters.Add(parameters[0]);      cmd.Parameters.Add(parameters[1]);      cmd.Parameters.Add(parameters[2]);      con.Open();      // 執(zhí)行存儲過程并返回影響的行數(shù)       Label1.Text = cmd.ExecuteNonQuery().ToString();      con.Close();      // 顯示影響的行數(shù)和輸出參數(shù)       Label1.Text += "-輸出參數(shù)為:" + parameters[1].Value.ToString();      Label1.Text += "-返回值為:" + parameters[2].Value.ToString();    }    //同時返回參數(shù)和記錄集的存儲過程GetUserAccountRe2    public void runGetUserAccountRe2()    {      SqlCommand cmd = common("GetUserAccountRe2");      // 創(chuàng)建參數(shù)       IDataParameter[] parameters = {          new SqlParameter("@UserName", SqlDbType.NChar,20) ,          new SqlParameter("@UserID", SqlDbType.Int) ,         new SqlParameter("rval", SqlDbType.Int,4)        };      // 設(shè)置參數(shù)類型       parameters[0].Value = "7";      parameters[1].Direction = ParameterDirection.Output; // 設(shè)置為輸出參數(shù)       parameters[2].Direction = ParameterDirection.ReturnValue; //設(shè)置為返回值      // 添加參數(shù)       cmd.Parameters.Add(parameters[0]);      cmd.Parameters.Add(parameters[1]);      cmd.Parameters.Add(parameters[2]);      con.Open();      // 執(zhí)行存儲過程并返回影響的行數(shù)       Label1.Text = cmd.ExecuteNonQuery().ToString();      DataSet ds = new DataSet();      SqlDataAdapter dt = new SqlDataAdapter(cmd);      dt.Fill(ds);      rpt.DataSource = ds;      rpt.DataBind();      con.Close();      // 顯示影響的行數(shù)和輸出參數(shù)       Label1.Text += "-輸出參數(shù)為:" + parameters[1].Value.ToString();      Label1.Text += "-返回值為:" + parameters[2].Value.ToString();    }    //返回多個記錄集的存儲過程    public void runGetUserAccountRe3()    {      DataSet ds = new DataSet();      SqlDataAdapter dt = new SqlDataAdapter(common("GetUserAccountRe3"));      dt.Fill(ds);      rpt1.DataSource = ds.Tables[0].DefaultView;      rpt1.DataBind();      rpt2.DataSource = ds.Tables[1].DefaultView;      rpt2.DataBind();    }        public SqlCommand common(string proName)    {            SqlCommand cmd = new SqlCommand();      // 設(shè)置sql連接       cmd.Connection = con;            // 如果執(zhí)行語句       cmd.CommandText = proName;      // 指定執(zhí)行語句為存儲過程       cmd.CommandType = CommandType.StoredProcedure;      return cmd;    }  }

附帶SQLServer數(shù)據(jù)庫的一些全局變量

select APP_NAME ( ) as w --當(dāng)前會話的應(yīng)用程序select @@IDENTITY  --返回最后插入的標(biāo)識值 select USER_NAME()  --返回用戶數(shù)據(jù)庫用戶名SELECT @@CONNECTIONS --返回自上次SQL啟動以來連接或試圖連接的次數(shù)。 SELECT GETDATE() --當(dāng)前時間 SELECT @@CPU_BUSY/100 --返回自上次啟動SQL 以來 CPU 的工作時間,單位為毫秒USE tempdb SELECT @@DBTS as w --為當(dāng)前數(shù)據(jù)庫返回當(dāng)前 timestamp 數(shù)據(jù)類型的值。這一 timestamp 值保證在數(shù)據(jù)庫中是唯一的。 select @@IDENTITY as w --返回最后插入的標(biāo)識值 SELECT @@IDLE as w --返回SQL自上次啟動后閑置的時間,單位為毫秒 SELECT @@IO_BUSY AS w  --返回SQL自上次啟動后用于執(zhí)行輸入和輸出操作的時間,單位為毫秒 SELECT @@LANGID AS w  --返回當(dāng)前所使用語言的本地語言標(biāo)識符(ID)。 SELECT @@LANGUAGE AS w  --返回當(dāng)前使用的語言名 SELECT @@LOCK_TIMEOUT as w --當(dāng)前會話的當(dāng)前鎖超時設(shè)置,單位為毫秒。 SELECT @@MAX_CONNECTIONS as w --返回SQL上允許的同時用戶連接的最大數(shù)。返回的數(shù)不必為當(dāng)前配置的數(shù)值 EXEC sp_configure --顯示當(dāng)前服務(wù)器的全局配置設(shè)置 SELECT @@MAX_PRECISION as w --返回 decimal 和 numeric 數(shù)據(jù)類型所用的精度級別,即該服務(wù)器中當(dāng)前設(shè)置的精度。默認最大精度38。 select @@OPTIONS as w --返回當(dāng)前 SET 選項的信息。 SELECT @@PACK_RECEIVED as w --返回SQL自啟動后從網(wǎng)絡(luò)上讀取的輸入數(shù)據(jù)包數(shù)目。 SELECT @@PACK_SENT as w --返回SQ自上次啟動后寫到網(wǎng)絡(luò)上的輸出數(shù)據(jù)包數(shù)目。 SELECT @@PACKET_ERRORS as w --返回自SQL啟動后,在SQL連接上發(fā)生的網(wǎng)絡(luò)數(shù)據(jù)包錯誤數(shù)。 SELECT @@SERVERNAME as w --返回運行SQL服務(wù)器名稱。 SELECT @@SERVICENAME as w --返回SQL正在其下運行的注冊表鍵名 SELECT @@TIMETICKS as w --返回SQL服務(wù)器一刻度的微秒數(shù) SELECT @@TOTAL_ERRORS AS w --返回 SQL服務(wù)器自啟動后,所遇到的磁盤讀/寫錯誤數(shù)。 SELECT @@TOTAL_READ as w --返回 SQL服務(wù)器自啟動后讀取磁盤的次數(shù)。 SELECT @@TOTAL_WRITE as w --返回SQL服務(wù)器自啟動后寫入磁盤的次數(shù)。 SELECT @@TRANCOUNT as w --返回當(dāng)前連接的活動事務(wù)數(shù)。 SELECT @@VERSION as w --返回SQL服務(wù)器安裝的日期、版本和處理器類型。 

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。



注:相關(guān)教程知識閱讀請移步到MSSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
中文字幕制服丝袜在线| 裸体一区二区| 欧美人与牲动交xxxx| 欧美资源在线| 亚洲精品福利资源站| 欧美丰满片xxx777| 欧美综合社区国产| 久久久999国产精品| 精品国产无码AV| 国产91视频在线| 不卡日本视频| 欧美久久综合性欧美| 中国xxxx自拍视频| heyzo久久| 蜜桃av免费观看| 69堂精品视频在线播放| 视频一区视频二区视频三区视频四区国产| 久久精子c满五个校花| 日韩网站免费观看| 国产一区第一页| 一级特黄aaa大片在线观看| 欧美成人黑人xx视频免费观看| 日韩欧美视频在线播放| 另类调教123区| 特黄特黄一级片| 免费在线不卡视频| 精品久久免费看| 免费观看又色又爽又黄的网站| 波多野吉衣av| 夫妇交换中文字幕| 黑森林国产精品av| 欧美一区二区三区影视| 狠狠狠狠狠狠操| 女人和拘做爰正片视频| 欧美激情一区二区三区在线| 人人妻人人澡人人爽人人欧美一区| 久久悠悠精品综合网| 国产高清在线精品| 国产熟女高潮一区二区三区| 久久99久国产精品黄毛片色诱| 日日夜夜av| 中文字幕在线永久| 日韩国产欧美在线视频| 黄色在线视频网址| 亚洲精品欧洲| 久久9999免费视频| 无码精品国产一区二区三区免费| 中文字字幕码一二三区| 中文在线最新版天堂| 精品极品在线| 久久视频国产精品免费视频在线| 国产精品亚洲视频| 非洲黑人最猛性xxxx交| 午夜久久久久久电影| 国产精品无码专区av免费播放| 久久精品人人做人人爽人人| 国产成人在线免费观看视频| 欧美日韩国产丝袜另类| 国产精品婷婷| 色偷偷88欧美精品久久久| 国产成人精品网站| 野花社区视频在线观看| 美女av免费在线观看| 91视频免费看片| 69日本xxxxxxxxx49| 香蕉视频一区二区三区| 日韩理论在线观看| 国产精品毛片一区二区三区| 国产免费无遮挡吸奶头视频| 五级黄高潮片90分钟视频| 国产精品7m凸凹视频分类| 精品人妻伦一区二区三区久久| jiujiure精品视频播放| 国产精品久久久久不卡| 精品不卡一区二区三区| 人妻少妇精品无码专区二区| 亚洲日本激情| 卡一卡2卡三精品| 欧美色精品天天在线观看视频| 99中文字幕在线观看| 国产 欧美 自拍| 在线看成人av电影| 特黄特色特刺激视频免费播放| 欧美一级视频在线观看| 亚洲欧美中文字幕在线观看| 欧美日韩麻豆| 国产亚洲精品久久久优势| 性色av一区二区| 成年人黄色大片在线| 五十路熟女丰满大屁股| 一区二区三区不卡在线| 快射av在线播放一区| 在线视频日韩欧美| 精品久久久久久无码中文野结衣| 91精品国产91久久综合| 久久先锋影音av| 姬川优奈aav一区二区| 日韩欧美国产不卡| 成人在线免费看视频| 日日爱66.cn| 精品视频久久久久| 亚洲国产一区二区三区a毛片| 亚洲欧美综合7777色婷婷| 2014亚洲片线观看视频免费| av在线看片| www.日韩大片| 嫩草影院一区二区| 国产精品字幕| 久久亚洲AV成人无码国产野外| 欧美一区二区视频观看视频| 秋霞影院一区二区| 成人羞羞视频免费| www一区二区www免费| 亚洲+小说+欧美+激情+另类| 国产性生活网站| 神马午夜在线观看| 4438x成人网最大色成网站| 成人福利在线| 日韩av不卡一区二区| 亚洲精品一区三区三区在线观看| 亚洲图片都市激情| 警花av一区二区三区| 性一交一黄一片| bestiality新另类大全| 国产主播一区二区| 成人免费a**址| 欧美精品在线网站| 九色视频九色自拍| 精品人妻大屁股白浆无码| 一本之道久久| 99久久久无码国产精品| japanesexxxxfree在线观看| 中文字幕国产综合| 精品成人免费观看| 91色视频在线导航| 91沈先生播放一区二区| 国产乱淫av片免费| 成人美女视频在线观看| 性高潮久久久久久| 国产乱码精品一区二三区蜜臂| 欧美裸体视频| 天堂在线视频免费观看| 玖玖玖视频精品| 国产精品国产a级| gogo在线高清视频| 久久五月精品中文字幕| 四季av一区二区凹凸精品| 日本在线中文字幕一区| 波多野结衣精品久久| 欧美最猛性xxxxx直播| 国产精品ⅴa有声小说| 久久日韩精品一区二区五区| 国产原创精品| 91九色美女在线视频| 欧美一区亚洲二区| 一区二区三区产品免费精品久久75| 男人看的污网站| 国产三级视频在线看| 人妻无码久久一区二区三区免费| 麻豆国产尤物av尤物在线观看| 久久麻豆一区二区| 人妻精品久久久久中文字幕69| 欧美日韩免费观看一区三区| 国产成人精品一区二三区四区五区| 91精品国产高清| 在线a欧美视频| 欧美色图一区二区三区| 国产日韩亚洲欧美综合| 欧美日韩国产一区二区三区不卡| xxxxbbbb欧美| 成人做爰66片免费看网站| 2024最新电影免费在线观看| 风间由美性色一区二区三区四区| 蜜桃视频在线观看一区| 欧美在线一卡| 日韩精品一级毛片在线播放| 又嫩又硬又黄又爽的视频| 91短视频在线| 亚洲一区二区在线观看视频| 很黄很黄的网站免费的| av在线最新| 成人黄色免费看| 69堂亚洲精品首页| 亚洲少妇最新在线视频| 真实国产乱子伦精品一区二区三区| 亚洲精品黄色| 川上优av一区二区线观看| 亚洲大香人伊一本线| 久久一区亚洲| 多野结衣av一区| 久久久久国产精品嫩草影院| 国产裸体免费无遮挡| 中文字幕第三页| 嫩草影院一区二区| 午夜偷拍福利视频| 亚洲国产另类久久久精品极度| 无码内射中文字幕岛国片| 亚洲国产视频a| 日韩av在线电影观看| 欧美性xxx| 一本色道久久综合亚洲精品图片| 最新版天堂资源中文官网| 丁香综合五月| 亚洲天天综合| 天堂精品中文字幕在线| 人妻无码视频一区二区三区| 日韩专区欧美专区| 欧美a级免费视频| 黄色三级免费电影| 欧美一级大片在线视频| 粗暴91大变态调教| 久久成人麻豆午夜电影| 麻豆91精品| 国产成a人亚洲精v品| 最新av在线| 亚洲欧美自偷自拍| 欧美日韩中国免费专区在线看| 久久久久久久久免费视频| 国精一区二区三区| 高清孕妇孕交╳╳交| 免费网站你懂的| 亚洲国产成人tv| а√中文在线天堂精品| 国产高清久久久| 天天干天天色综合| 伊人天天久久大香线蕉av色| 色噜噜色狠狠狠狠狠综合色一| 在线观看av网页| 亚洲一区二区三区加勒比| 国产精品日本一区二区三区在线| 午夜精品久久久久久毛片| 性感美女视频一二三| 麻豆一区二区| 精品国产美女福利到在线不卡| 亚洲日韩第九十九页| 久久久久高潮毛片免费全部播放| 亚洲精品国精品久久99热| 国产精品青青草| 久久精品aⅴ无码中文字字幕重口| 中文幕一区二区三区久久蜜桃| 韩国视频一区| 内射后入在线观看一区| 精品久久久久久久久久久下田| 欧美一区二区三区免费视频| av中文字幕免费观看| 人人干人人干| 久久精品国产理论片免费| 国产精品理论片在线观看| 波多野结衣乳巨码无在线观看| 欧美黄色小说| 久久国产精品-国产精品| 色视频www在线播放国产人成| 国模精品一区二区三区| 日本一区二区三区dvd视频在线| 性xxxx丰满孕妇xxxx另类| 久久青草伊人| 免费国产在线观看| 欧美男女交配视频| 99在线精品免费视频九九视| ****av在线网毛片| 亚洲免费观看高清完整版在线| 玖草视频在线| 午夜精品久久久久久久无码| 欧美日韩视频在线播放| 免费在线黄色av| 国产一区视频在线看| 国产自产2019最新不卡| 国产伦精品一区二区三区视频金莲| 99国内精品久久久久久久| xxx在线视频| 99久久精品免费看国产免费软件| 欧美日韩成人免费| 日韩av在线一区二区三区| 国产视频不卡在线| 久久激情视频免费观看| 亚洲影视一区二区三区| 久久久久久久久中文字幕| 天堂在线视频观看| 在线免费观看污| 免费在线色视频| 91theporn国产在线观看| 明星乱亚洲合成图.com| 欧美中文在线| 日本大臀精品| 日韩中文首页| 黑人巨大猛交丰满少妇| 欧美极品xxxx| 在线观看的网站你懂的| 91精品国产一区| av电影在线免费观看| 日韩欧美一区二区三区在线| 女一区二区三区| 成人在线视频首页| av成人资源网| 好吊视频一区二区三区四区| 一区二区不卡在线观看| 波多野结衣在线观看视频| 在线电影中文字幕| av动漫一区二区| 中文字幕免费高清在线| 一区二区三区四区在线免费观看| 日本aⅴ大伊香蕉精品视频| 亚洲欧美日韩中文字幕一区二区三区| 国产一在线精品一区在线观看| 免费av片风间由美在线| 久久国产一级片| av超碰在线观看| 国产精品久久久久久久久电影网| 深夜爽爽视频| 国产一区二区三区在线免费观看| 国模精品一区二区| 国产在线视频一区二区三区| 国产卡一卡2卡三卡免费视频| 国产美女自慰在线观看| 香蕉视频在线播放| 91丨九色丨黑人外教| 99久久久国产精品无码网爆| 国产精品久久久久久无人区| 国产精品伦理一区二区| 91精品天堂福利在线观看| 99v久久综合狠狠综合久久| xfplay资源站夜色先锋5566| 成人av免费在线看| 一级黄色片在线观看| 久久99国产精品久久99果冻传媒| 熟妇人妻一区二区三区四区| 色a资源在线| 污污污污污污www网站免费|