<optgroup id="r9hwm"></optgroup><nav id="r9hwm"><label id="r9hwm"></label></nav>

    <tt id="r9hwm"><tr id="r9hwm"></tr></tt>
  1. 
    
  2. <optgroup id="r9hwm"><samp id="r9hwm"><dl id="r9hwm"></dl></samp></optgroup>

  3. <optgroup id="r9hwm"><samp id="r9hwm"><dl id="r9hwm"></dl></samp></optgroup>

        1. <listing id="r9hwm"></listing>
          <delect id="r9hwm"></delect>
          <optgroup id="r9hwm"><samp id="r9hwm"><ol id="r9hwm"></ol></samp></optgroup>

          存儲過程執行sql語句

          sql server 用什么執行存儲過程語句

          執行帶參數的存儲過程的方法如下:

          Exec sp_configure 'allow updates',1 --允許更新系統表。

          exec *_ChangeObjectOwnerBatch 'OldOwner','dbo'

          以上是兩個例子。

          SQL Server中執行帶參數的存儲過程的方法是:

          EXEC 存儲過程名字 '參數1','參數2',數值參數

          EXEC 是一個關鍵字。

          字符串參數使用單引號括起來,數值參數不需要使用單引號

          存儲過程怎么查看執行sql語句

          MSSQL為我們提供了兩種動態執行SQL語句的命令,分別是EXEC和 sp_executesql;通常,sp_executesql則更具有優勢,它提供了輸入輸出接口,而EXEC沒有。

          還有一個最大的好處就是利用 sp_executesql,能夠重用執行計劃,這就大大提供了執行性能,還可以編寫更安全的代碼。EXEC在某些情況下會更靈活。

          除非您有令人信服的理 由使用EXEC,否側盡量使用sp_*的使用 EXEC命令有兩種用法,一種是執行一個存儲過程,另一種是執行一個動態的批處理。以下所講的都是第二種用法。

          下面先使用EXEC演示一個例子,代碼1 代碼 DECLARE @TableName VARCHAR(50),@Sql NVARCHAR (MAX),@OrderID INT; SET @TableName = 'Orders'; SET @OrderID = 10251; SET @sql = 'SELECT * FROM '+QUOTENAME(@TableName) +'WHERE OrderID = '+ CAST(@OrderID AS VARCHAR(10))+' ORDER BY ORDERID DESC' EXEC(@sql); 注:這里的EXEC括號中只允許包含一個字符串變量,但是可以串聯多個變量,如果我們這樣寫EXEC:EXEC('SELECT TOP('+ CAST(@TopCount AS VARCHAR(10)) +')* FROM '+ QUOTENAME(@TableName) +' ORDER BY ORDERID DESC'); SQL編譯器就會報錯,編譯不通過,而如果我們這樣:EXEC(@sql+@sql2+@sql3); 編譯器就會通過; 所以最佳的做法是把代碼構造到一個變量中,然后再把該變量作為EXEC命令的輸入參數,這樣就不會受限制了。 EXEC的缺點是不提供接口,這里的接口是指,它不能執行一個包含一個帶變量符的批處理,如下 代碼 DECLARE @TableName VARCHAR(50),@Sql NVARCHAR(MAX),@OrderID INT; SET @TableName = 'Orders'; SET @OrderID = 10251; SET @sql = 'SELECT * FROM '+QUOTENAME(@TableName) + 'WHERE OrderID = @OrderID ORDER BY ORDERID DESC' EXEC(@sql); 關鍵就在SET @sql這一句話中,如果我們運行這個批處理,編譯器就會產生一下錯誤 Msg 137, Level 15, State 2, Line 1 必須聲明標量變量 "@OrderID"。

          使用EXEC時,如果您想訪問變量,必須把變量內容串聯到動態構建的代碼字符串中,如:SET @sql = 'SELECT * FROM '+QUOTENAME(@TableName) + 'WHERE OrderID = '+CAST(@OrderID AS VARCHAR(10))+' ORDER BY ORDERID DESC' 串聯變量的內容也存在性能方面的弊端。SQL Server為每一個的查詢字符串創建新的執行計劃,即使查詢模式相同也是這樣。

          為演示這一點,先清空緩存中的執行計劃 DBCC FREEPROCCACHE (這個不是本文所涉及的內容,您可以查看MS的MSDN) 將代碼1運行3次,分別對@OrderID 賦予下面3個值,10251,10252,10253。然后使用下面的代碼查詢 SELECT cacheobjtype,objtype,usecounts,sql FROM *heobjects WHERE sql NOT LIKE '%cach%' AND sql NOT LIKE '%sys.%' 點擊F5運行,我們可以看到,每執行一次都要產生一次的編譯,執行計劃沒有得到充分重用。

          EXEC除了不支持動態批處理中的輸入參數外,他也不支持輸出參數。默認情況下,EXEC把查詢的輸出返回給調用者。

          例如下面代碼返回Orders表中所有的記錄數 DECLARE @sql NVARCHAR(MAX) SET @sql = 'SELECT COUNT(ORDERID) FROM Orders'; EXEC(@sql); 然而,如果你要把輸出返回給調用批處理中的變量,事情就沒有那么簡單了。為此,你必須使用INSERT EXEC語法把輸出插入到一個目標表中,然后從這表中獲取值后賦給該變量,就像這樣:代碼 DECLARE @sql NVARCHAR(MAX),@RecordCount INT SET @sql = 'SELECT COUNT(ORDERID) FROM Orders'; CREATE TABLE #T(TID INT); INSERT INTO #T EXEC(@sql); SET @RecordCount = (SELECT TID FROM #T) SELECT @RecordCount DROP TABLE #*_executesql的使用 sp_executesql命令在SQL Server中引入的比EXEC命令晚一些,它主要為重用執行計劃提供更好的支持。

          為了和EXEC作一個鮮明的對比,我們看看如果用代碼1的代碼,把EXEC換成sp_executesql,看看是否得到我們所期望的結果 代碼 DECLARE @TableName VARCHAR(50),@sql NVARCHAR(MAX),@OrderID INT ,@sql2 NVARCHAR(MAX); SET @TableName = 'Orders '; SET @OrderID = 10251; SET @sql = 'SELECT * FROM '+QUOTENAME(@TableName) + ' WHERE OrderID = '+CAST(@OrderID AS VARCHAR(50)) + ' ORDER BY ORDERID DESC' EXEC sp_executesql @sql 注意最后一行;事實證明可以運行;sp_executesql提供接口 sp_executesql命令比EXEC命令更靈活,因為它提供一個接口,該接口及支持輸入參數也支持輸出參數。這功能使你可以創建帶參數的查詢字符串,這樣就可以比EXEC更好的重用執行計劃,sp_executesql的構成與存儲過程非常相似,不同之處在于你是動態構建代碼。

          它的構成包括:代碼快,參數聲明部分,參數賦值部分。說了這么多,還是看看它的語法:EXEC sp_executesql @stmt= ,--類似存儲過程。

          怎樣SQL存儲過程中執行動態SQL語句

          MSSQL為我們提供了兩種動態執行SQL語句的命令,分別是EXEC和sp_executesql;通常,sp_executesql則更具有優勢,它提供了輸入輸出接口,而EXEC沒有。

          還有一個最大的好處就是利用sp_executesql,能夠重用執行計劃,這就大大提供了執行性能,還可以編寫更安全的代碼。EXEC在某些情況下會更靈活。

          除非您有令人信服的理由使用EXEC,否側盡量使用sp_*的使用 EXEC命令有兩種用法,一種是執行一個存儲過程,另一種是執行一個動態的批處理。以下所講的都是第二種用法。

          下面先使用EXEC演示一個例子,代碼1代碼 DECLARE @TableName VARCHAR(50),@Sql NVARCHAR (MAX),@OrderID INT; SET @TableName = 'Orders'; SET @OrderID = 10251; SET @sql = 'SELECT * FROM '+QUOTENAME(@TableName) +'WHERE OrderID = '+ CAST(@OrderID AS VARCHAR(10))+' ORDER BY ORDERID DESC' EXEC(@sql);注:這里的EXEC括號中只允許包含一個字符串變量,但是可以串聯多個變量,如果我們這樣寫EXEC:EXEC('SELECT TOP('+ CAST(@TopCount AS VARCHAR(10)) +')* FROM '+ QUOTENAME(@TableName) +' ORDER BY ORDERID DESC'); SQL編譯器就會報錯,編譯不通過,而如果我們這樣:EXEC(@sql+@sql2+@sql3);編譯器就會通過; 所以最佳的做法是把代碼構造到一個變量中,然后再把該變量作為EXEC命令的輸入參數,這樣就不會受限制了。 EXEC的缺點是不提供接口,這里的接口是指,它不能執行一個包含一個帶變量符的批處理,如下代碼 DECLARE @TableName VARCHAR(50),@Sql NVARCHAR(MAX),@OrderID INT; SET @TableName = 'Orders'; SET @OrderID = 10251; SET @sql = 'SELECT * FROM '+QUOTENAME(@TableName) + 'WHERE OrderID = @OrderID ORDER BY ORDERID DESC' EXEC(@sql);關鍵就在SET @sql這一句話中,如果我們運行這個批處理,編譯器就會產生一下錯誤 Msg 137, Level 15, State 2, Line 1 必須聲明標量變量 "@OrderID"。

          使用EXEC時,如果您想訪問變量,必須把變量內容串聯到動態構建的代碼字符串中,如:SET @sql = 'SELECT * FROM '+QUOTENAME(@TableName) + 'WHERE OrderID = '+CAST(@OrderID AS VARCHAR(10))+' ORDER BY ORDERID DESC'串聯變量的內容也存在性能方面的弊端。SQL Server為每一個的查詢字符串創建新的執行計劃,即使查詢模式相同也是這樣。

          為演示這一點,先清空緩存中的執行計劃 DBCC FREEPROCCACHE (這個不是本文所涉及的內容,您可以查看MS的MSDN) 將代碼1運行3次,分別對@OrderID 賦予下面3個值,10251,10252,10253。然后使用下面的代碼查詢SELECT cacheobjtype,objtype,usecounts,sql FROM *heobjects WHERE sql NOT LIKE '%cach%' AND sql NOT LIKE '%sys.%' 點擊F5運行,我們可以看到,每執行一次都要產生一次的編譯,執行計劃沒有得到充分重用。

          EXEC除了不支持動態批處理中的輸入參數外,他也不支持輸出參數。默認情況下,EXEC把查詢的輸出返回給調用者。

          例如下面代碼返回Orders表中所有的記錄數DECLARE @sql NVARCHAR(MAX) SET @sql = 'SELECT COUNT(ORDERID) FROM Orders'; EXEC(@sql);然而,如果你要把輸出返回給調用批處理中的變量,事情就沒有那么簡單了。為此,你必須使用INSERT EXEC語法把輸出插入到一個目標表中,然后從這表中獲取值后賦給該變量,就像這樣:代碼DECLARE @sql NVARCHAR(MAX),@RecordCount INT SET @sql = 'SELECT COUNT(ORDERID) FROM Orders'; CREATE TABLE #T(TID INT); INSERT INTO #T EXEC(@sql); SET @RecordCount = (SELECT TID FROM #T) SELECT @RecordCount DROP TABLE #*_executesql的使用sp_executesql命令在SQL Server中引入的比EXEC命令晚一些,它主要為重用執行計劃提供更好的支持。

          為了和EXEC作一個鮮明的對比,我們看看如果用代碼1的代碼,把EXEC換成sp_executesql,看看是否得到我們所期望的結果代碼DECLARE @TableName VARCHAR(50),@sql NVARCHAR(MAX),@OrderID INT ,@sql2 NVARCHAR(MAX); SET @TableName = 'Orders '; SET @OrderID = 10251; SET @sql = 'SELECT * FROM '+QUOTENAME(@TableName) + ' WHERE OrderID = '+CAST(@OrderID AS VARCHAR(50)) + ' ORDER BY ORDERID DESC' EXEC sp_executesql @sql注意最后一行;事實證明可以運行;sp_executesql提供接口sp_executesql命令比EXEC命令更靈活,因為它提供一個接口,該接口及支持輸入參數也支持輸出參數。這功能使你可以創建帶參數的查詢字符串,這樣就可以比EXEC更好的重用執行計劃,sp_executesql的構成與存儲過程非常相似,不同之處在于你是動態構建代碼。

          它的構成包括:代碼快,參數聲明部分,參數賦值部分。說了這么多,還是看看它的語法:EXEC sp_executesql @stmt= ,--類似存儲過程主體 。

          怎樣SQL存儲過程中執行動態SQL語句

          *的使用

          EXEC命令有兩種用法,一種是執行一個存儲過程,另一種是執行一個動態的批處理。以下所講的都是第二種用法。

          下面先使用EXEC演示一個例子,代碼1

          DECLARE @TableName VARCHAR(50),@Sql NVARCHAR (MAX),@OrderID INT;

          SET @TableName = 'Orders';

          SET @OrderID = 10251;

          SET @sql =

          'SELECT * FROM '+QUOTENAME(@TableName) +'WHERE OrderID = '+

          CAST(@OrderID AS VARCHAR(10))+' ORDER BY ORDERID DESC'

          EXEC(@sql);

          sp_executesql命令在SQL Server中引入的比EXEC命令晚一些,它主要為重用執行計劃提供更好的支持。

          為了和EXEC作一個鮮明的對比,我們看看如果用代碼1的代碼,把EXEC換成sp_executesql,看看是否得到我們所期望的結果

          DECLARE @TableName VARCHAR(50),@sql NVARCHAR(MAX),@OrderID INT ,@sql2 NVARCHAR(MAX);

          SET @TableName = 'Orders ';

          SET @OrderID = 10251;

          SET @sql = 'SELECT * FROM '+QUOTENAME(@TableName) + ' WHERE OrderID = '+CAST(@OrderID AS VARCHAR(50)) + ' ORDER BY ORDERID DESC'

          EXEC sp_executesql @sql

          存儲過程與SQL語句是怎樣的

          我的一位朋友說:他從臺灣知名技術作家李維先生的一本書中獲悉,如果用存儲過程封裝SQL語句,系統效率將有極大提升。

          他做過實驗!!! --我相信朋友做過實驗,盡管非親眼所見。不過我估計他的實驗有問題,那樣的實驗不但蒙蔽了他,也蒙蔽了李維先生(如果他的著作中的內容沒有被誤會),甚至更多的人。

          然而我必須拿出證據,方能使人信服。 后來遇到一個具體的問題:客戶端經常要向數據庫插入記錄。

          在J2EE中,一個 Entity Bean Home 的 create 方法調用中,一般就沒用存儲過程。朋友立馬在觀點上持反對意見( 可能是因為他暫時有來得及否決J2EE ),認為要是J2EE能夠將“插入記錄”諸如此類動作改為對存儲過程的調用就好了。

          我們因此再次發生爭論(我僅是反對朋友的看法,但也沒提出任何我自己的看法,因為要下一個結論是很不容易的)。最后我不得已而做了實驗,分別在 Oracle 10g 和 postgreSQL 8。

          0。1 上。

          實驗內容如下: A、建表腳本: create table ztest( fieldA integer primary key, fieldB varchar(128), fieldC varchar(128) ) B、客戶端請求 DBMS 執行的 insert SQL語句: insert into ztest values( ?1, ?2, ?3 ); -- ?1,?2,?3 將在運行時以合理的值替代之 C、客戶端調用的存儲過程(JDBC CallableStatement 調用): Oracle:(調用方式 call up_add(。 。

          。),) create or replace procedure up_add( fieldA integer, fieldB varchar, fieldC varchar ) is begin insert into ztest values( fieldA, fieldB, fieldC); end; postgreSQL:(客戶端調用方式 select uf_add(。

          ) ) CREATE OR REPLACE FUNCTION uf_add (integer, varchar, varchar) RETURNS void AS' begin insert into ztest values($1,$2,$3); return; end; 'LANGUAGE 'plpgsql' VOLATILE RETURNS NULL ON NULL INPUT SECURITY INVOKER; D、環境: postgreSQL:數據庫服務器與客戶端程序“都在本機”并“同時運行” Oracle: 獨立數據庫服務器(測試時始終有人在慢慢打字,應該對機器性能無影響) 測試: 通過不同方式( 即 請求DBMS執行SQL語句 和 調用DBMS邏輯等價的存儲過程)向測試表中連續加入 1024 記錄 經多次反復測試,得結果如下 postgreSQL: 兩種方式下,測試時間均為 21- 24 seconds 之間 (每個結果的測試環境一致) Oracle: 8次 SQL 執行請求分別用時(ms) 5422 4750 3875 3812 5672 3531 3484 3547 6次 存儲過程調用分別用時(ms) 4578 4500 6297 4219 4547 5734 (每個結果的測試環境一致)由此可知,存儲過程封裝簡單的 SQL 語句,效率相當,且可能更低。 但很多朋友的確得出結論:存儲過程的確比SQL快。

          為什么?---- 因為他們測試時寫了一個不具實際意義,同時也與SQL語句的“一次客戶端調用”不具可比性的測試用存儲過程。Oracle PL/SQL 描述方式如下,該方法一次調用就可以向數據表添加 1024 條記錄,連網絡通訊都省了。

          怪不得性能有“千倍差異”! create or replace procedure up_add( ) is declare n:integer; begin n := 0; while( n 它與客戶端一次提交單條 SQL 語句沒有可比性:當一次只需要向DBMS提交一條新記錄,要這個存儲過程干什么呢?。

          轉載請注明出處華閱文章網 » 存儲過程執行sql語句

          短句

          perlor語句

          閱讀(238)

          perl中一個foreach語句的編寫 你可以說說以下兩件事嗎 ? 1. @$beads 和 @$balls 的結構是怎樣的? 2. $beadname 和 $ballname 是怎樣來的? 比說是一個 sub 的參數, 或是數組中

          短句

          表達感謝的語句

          閱讀(289)

          表達感謝的句子有哪些1. 千言萬語,表達不了我的感激之情,我只能說,我已銘記在心。2. 幸福的生活中少不了你的陪伴,高興的快樂都是關于你的出現。感謝有你,生活不在孤單;感謝有你,距離不在遙遠,感謝有你!3. 向所有幫忙過我的朋友和我所愛的朋友說

          短句

          初中英語句成分

          閱讀(269)

          初中英語:句子成分 根據英語詞匯在英語句子中的地位和作用, 英語句子的成分可分為主語、謂語、賓語、賓語補足語、表語、定語、狀語、同位語及獨立成分等。其中,主語和謂語是句子的主要成分,一般情況下,一個句子不能缺少這兩種成分。1. 主語

          短句

          被誤會的語句

          閱讀(243)

          形容誤會的句子 1. 最尷尬莫過于兩個半生不熟的人路上想打招呼又顧慮關系是否夠,最后慫了裝做沒看見,還被人誤解你傲慢不理人。2. 沒人能理解我,即使有,不是奇跡就是誤解。3. 害怕被誤解所以一直掩蓋著直到知道其他人心里其實也有傷口……4

          短句

          人物動作的語句

          閱讀(244)

          描寫人物神態和動作的句子 興奮和激動如同決了堤的洪水,浩浩蕩蕩,嘩嘩啦啦地從他的心理傾瀉了 出來,他再也無法隱藏他的那份斯文了. 奔跑,奔跑,奔跑!他的心激動著,他的痛快已經不

          短句

          升序sql語句

          閱讀(704)

          sql 升序降序排列 降序:SELECT * FROM kc ORDER BY cpbh DESC升序:SELECT * FROM kc ORDER BY cpbh ASC語法:sql可以根據字段進行排序,其中,DESC表示降序,ASC表示升序order b

          短句

          關于生日的語句

          閱讀(283)

          形容生日快樂的句子 1、支支燦爛的燭光,歲歲生日的幸福。幸運的你,明天會更好! 2、悠悠的云里有淡淡的詩,淡淡的詩里有綿綿的喜悅,綿綿的喜悅里有我輕輕的祝福,生日快樂! 3、盈盈今日天如水,戀戀當年水似天。情緣駐我心,相思比夢長。祝福你生日

          短句

          js的循環語句

          閱讀(262)

          JavaScript的循環語句有哪些1while;var num = 1;//1、聲明循環變量while (num<=10){//2、判斷循環條件;document.write(num+"<br />");//3、執行循環體操作;num++;//4、更新循環

          短句

          寫草原的語句

          閱讀(241)

          描寫草原優美的句子 描寫草原優美的句子1、我不忍心地踏著腳下肥嫩的青草,趕著羊群來到草原。這廣闊無垠的草原多美啊,到處都是養眼的綠色;這里草原的天空多美啊,以藍色為底色的天空中覆蓋著幾朵悠悠的白云,藍中帶白的天空真美!2、這時,草原上

          短句

          勵志高考語句

          閱讀(259)

          高考勵志語錄有哪些 無論這次的成敗如何,未來還有很長的路要走,相信自己,才能創造。 我們講同的家 三年,漫長而又短暫.在這不同尋常的三年中,我們風雨兼程,肩并。。 HAPPY 佳佳

          短句

          sql語句in的意思

          閱讀(445)

          SQL語句中 in和exist區別 in 和 exists也是很好區別的.in 是一個集合運算符.a in {a,c,d,s,d。.}這個運算中,前面是一個元素,后面是一個集合,集合中的元素類型是和前面的元素

          短句

          夫妻經典語句

          閱讀(258)

          夫妻共患難共富貴經典語錄 是啊,從古到今同甘共苦都是個問題.其實有很多夫妻是可以一起共苦的,卻未必都能同甘.其實這樣不都是誰不愛誰了.而是淡薄了彼此的信任.要想能共患難又能同富貴其實并不難,難的是有些人看不明白.這就是所謂的當局

          短句

          山水語句

          閱讀(246)

          描述山水的優美句子 當涼風習習低拂過水面的時候,水上頓時會出現一條瞬間即逝的狹長的銀色薄箔。 古桑干河,銀波泛泛,晚霞蒙蒙。 淮河像一條翡翠緞帶,在中原大地金黃色的地毯上飄過;又像一條碧綠的玉帶,緊緊系在巨人的袍子上。 湖畔全是草土,

          短句

          水滸傳語句

          閱讀(269)

          水滸傳精彩語句摘抄 好句1、八方共域,異姓一家。2、胸中藏戰將,腹內隱雄兵。3、堂懸敕額金牌,家有誓書鐵卷。4、只好刺槍使棒,最是踢得好腳氣球。5、禪杖打開危險路,戒刀殺盡不

          短句

          perlor語句

          閱讀(238)

          perl中一個foreach語句的編寫 你可以說說以下兩件事嗎 ? 1. @$beads 和 @$balls 的結構是怎樣的? 2. $beadname 和 $ballname 是怎樣來的? 比說是一個 sub 的參數, 或是數組中

          短句

          初中英語句成分

          閱讀(269)

          初中英語:句子成分 根據英語詞匯在英語句子中的地位和作用, 英語句子的成分可分為主語、謂語、賓語、賓語補足語、表語、定語、狀語、同位語及獨立成分等。其中,主語和謂語是句子的主要成分,一般情況下,一個句子不能缺少這兩種成分。1. 主語

          短句

          表達感謝的語句

          閱讀(289)

          表達感謝的句子有哪些1. 千言萬語,表達不了我的感激之情,我只能說,我已銘記在心。2. 幸福的生活中少不了你的陪伴,高興的快樂都是關于你的出現。感謝有你,生活不在孤單;感謝有你,距離不在遙遠,感謝有你!3. 向所有幫忙過我的朋友和我所愛的朋友說

          短句

          被誤會的語句

          閱讀(243)

          形容誤會的句子 1. 最尷尬莫過于兩個半生不熟的人路上想打招呼又顧慮關系是否夠,最后慫了裝做沒看見,還被人誤解你傲慢不理人。2. 沒人能理解我,即使有,不是奇跡就是誤解。3. 害怕被誤解所以一直掩蓋著直到知道其他人心里其實也有傷口……4

          短句

          升序sql語句

          閱讀(704)

          sql 升序降序排列 降序:SELECT * FROM kc ORDER BY cpbh DESC升序:SELECT * FROM kc ORDER BY cpbh ASC語法:sql可以根據字段進行排序,其中,DESC表示降序,ASC表示升序order b

          短句

          人物動作的語句

          閱讀(244)

          描寫人物神態和動作的句子 興奮和激動如同決了堤的洪水,浩浩蕩蕩,嘩嘩啦啦地從他的心理傾瀉了 出來,他再也無法隱藏他的那份斯文了. 奔跑,奔跑,奔跑!他的心激動著,他的痛快已經不

          短句

          sql語句日期查詢

          閱讀(288)

          怎么使用sql語句查詢日期所在周的一周各天 檢索日期所在周的一周各天日期方法 一、用到的函數有datepart(),dateadd() 1、datepart()函數,返回代表指定日期的指定日期部分的整數。 語法:DATEPART ( datepart ,da

          短句

          關于生日的語句

          閱讀(283)

          形容生日快樂的句子 1、支支燦爛的燭光,歲歲生日的幸福。幸運的你,明天會更好! 2、悠悠的云里有淡淡的詩,淡淡的詩里有綿綿的喜悅,綿綿的喜悅里有我輕輕的祝福,生日快樂! 3、盈盈今日天如水,戀戀當年水似天。情緣駐我心,相思比夢長。祝福你生日

          <optgroup id="r9hwm"></optgroup><nav id="r9hwm"><label id="r9hwm"></label></nav>

            <tt id="r9hwm"><tr id="r9hwm"></tr></tt>
          1. 
            
          2. <optgroup id="r9hwm"><samp id="r9hwm"><dl id="r9hwm"></dl></samp></optgroup>

          3. <optgroup id="r9hwm"><samp id="r9hwm"><dl id="r9hwm"></dl></samp></optgroup>

                1. <listing id="r9hwm"></listing>
                  <delect id="r9hwm"></delect>
                  <optgroup id="r9hwm"><samp id="r9hwm"><ol id="r9hwm"></ol></samp></optgroup>
                  亚洲丰满少妇xxxxx高潮