《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > GKD-Base PL/SQL存儲(chǔ)函數(shù)實(shí)現(xiàn)的關(guān)鍵技術(shù)研究

GKD-Base PL/SQL存儲(chǔ)函數(shù)實(shí)現(xiàn)的關(guān)鍵技術(shù)研究

2008-10-24
作者:高朝瑞 熊偉 陳宏盛  翟玉人

  摘 要: 介紹具有自主知識(shí)產(chǎn)權(quán)的某安全數(shù)據(jù)庫(kù)管理系統(tǒng)" title="管理系統(tǒng)">管理系統(tǒng)GKD-Base" title="GKD-Base">GKD-Base的PL/SQL引擎,基于該引擎研究GKD-Base存儲(chǔ)函數(shù)機(jī)制實(shí)現(xiàn)的關(guān)鍵技術(shù)。設(shè)計(jì)了函數(shù)管理器" title="管理器">管理器和執(zhí)行狀態(tài)堆棧,通過(guò)語(yǔ)法樹(shù)表示存儲(chǔ)函數(shù)編譯后生成的中間代碼,并解決了中間代碼的執(zhí)行問(wèn)題。最后實(shí)現(xiàn)了IN、OUT、INOUT三種參數(shù)模式函數(shù)的參數(shù)傳遞機(jī)制。
  關(guān)鍵詞: 存儲(chǔ)函數(shù) 過(guò)程式SQL語(yǔ)言 PL/SQL 函數(shù)管理器 執(zhí)行狀態(tài)堆棧


  GKD-Base是一個(gè)具有自主知識(shí)產(chǎn)權(quán)的安全數(shù)據(jù)庫(kù)管理系統(tǒng)。經(jīng)過(guò)十幾年的發(fā)展和試點(diǎn)應(yīng)用,已經(jīng)證明該系統(tǒng)是穩(wěn)定和安全可靠的。但是,隨著應(yīng)用需求向深度和廣度的發(fā)展,GKD-Base在很多方面暴露出不足,如不支持過(guò)程式SQL語(yǔ)言、不支持存儲(chǔ)過(guò)程和函數(shù)、缺少觸發(fā)器功能,這都為GKD-Base數(shù)據(jù)庫(kù)管理系統(tǒng)的進(jìn)一步推廣應(yīng)用帶來(lái)了不小的障礙。由于目前數(shù)據(jù)庫(kù)管理系統(tǒng)產(chǎn)品大都支持過(guò)程式的SQL語(yǔ)言,如Oracle的PL/SQL、SQL Server的T-SQL、PostgreSQL的PL/pgSQL等,其中又以O(shè)racle的PL/SQL使用最為廣泛。因此,為使GKD-Base適應(yīng)應(yīng)用需求的發(fā)展,滿足數(shù)據(jù)庫(kù)管理和開(kāi)發(fā)人員的需求,筆者開(kāi)發(fā)了GKD-Base PL/SQL引擎,進(jìn)而在引擎的基礎(chǔ)上實(shí)現(xiàn)了GKD-Base存儲(chǔ)函數(shù)機(jī)制。GKD-Base PL/SQL引擎兼容了Oracle PL/SQL V2.3語(yǔ)言規(guī)范,可以使用變量、類型、表達(dá)式、條件和循環(huán)、過(guò)程和函數(shù)等過(guò)程式語(yǔ)言中的通用機(jī)制進(jìn)行程序設(shè)計(jì),同時(shí)也可以使用SQL 語(yǔ)句進(jìn)行數(shù)據(jù)操作。
  存儲(chǔ)函數(shù)是獨(dú)立存在于表之外的數(shù)據(jù)庫(kù)對(duì)象,是由用戶按照存儲(chǔ)函數(shù)語(yǔ)言規(guī)范編寫(xiě)的經(jīng)過(guò)數(shù)據(jù)庫(kù)分析和編譯的PL/SQL程序,它有輸入/輸出參數(shù)和返回值,可以被其它應(yīng)用程序調(diào)用。存儲(chǔ)函數(shù)可以避免重復(fù)編碼,具有更高的可靠性和效率,是數(shù)據(jù)庫(kù)管理系統(tǒng)的重要功能擴(kuò)充。本文在介紹GKD-Base PL/SQL引擎設(shè)計(jì)框架的基礎(chǔ)上,重點(diǎn)探討GKD-Base存儲(chǔ)函數(shù)實(shí)現(xiàn)的關(guān)鍵技術(shù)。
1 GKD-Base PL/SQL引擎的體系結(jié)構(gòu)
  GKD-Base采用客戶服務(wù)器結(jié)構(gòu),以多線程機(jī)制支持客戶訪問(wèn),登錄到數(shù)據(jù)庫(kù)的用戶實(shí)際上是運(yùn)行數(shù)據(jù)庫(kù)管理系統(tǒng)映像的一個(gè)線程。GKD-Base支持TCP/IP協(xié)議,客戶可以在任何TCP/IP網(wǎng)絡(luò)和服務(wù)器建立連接訪問(wèn)數(shù)據(jù)庫(kù)。GKD-Base API提供了用戶應(yīng)用、實(shí)用程序和第三方開(kāi)發(fā)工具三種接入數(shù)據(jù)庫(kù)的方式,并提供了兩個(gè)級(jí)別的接口,即GKD-Base內(nèi)部接口GKD-API和GKD-Base ODBC Driver。GKD-API是用戶訪問(wèn)數(shù)據(jù)庫(kù)的高效調(diào)用方式,用戶可利用GKD-API實(shí)現(xiàn)實(shí)時(shí)性要求較高的數(shù)據(jù)庫(kù)應(yīng)用,起到比較理想的效果。GKD-Base ODBC Driver是GKD-Base開(kāi)放連接的手段,符合ODBC擴(kuò)展一級(jí)。在GKD-Base的ODBC驅(qū)動(dòng)程序支持下,用戶可利用各種第三方開(kāi)發(fā)工具,方便地開(kāi)發(fā)GKD-Base數(shù)據(jù)庫(kù)應(yīng)用程序。
  GKD-Base PL/SQL引擎應(yīng)用模式如圖1。PL/SQL語(yǔ)句塊通過(guò)PL/SQL編譯器編譯成語(yǔ)法樹(shù)形式表示的中間代碼,中間代碼信息可以保存在DBMS的中間代碼庫(kù)中。客戶應(yīng)用程序中的請(qǐng)求由GKD-Base預(yù)處理器分離成為過(guò)程語(yǔ)句部分和SQL命令部分。過(guò)程語(yǔ)句解釋執(zhí)行器" title="執(zhí)行器">執(zhí)行器解釋執(zhí)行過(guò)程語(yǔ)句的中間代碼,SQL命令則直接調(diào)用GKD-API執(zhí)行。


  根據(jù)PL/SQL語(yǔ)言兼有過(guò)程式語(yǔ)句和SQL語(yǔ)句的特點(diǎn),GKD-Base PL/SQL引擎把過(guò)程式語(yǔ)句和SQL語(yǔ)句分開(kāi)處理。為了降低引擎實(shí)現(xiàn)的復(fù)雜程度,盡可能地從功能性的角度將整個(gè)引擎劃分為不同的處理模塊,每個(gè)處理模塊盡可能地降低相互間的耦合程度。其中最主要的劃分是將整個(gè)引擎劃分為前端編譯器和后端解釋執(zhí)行器。
  前端編譯器包括語(yǔ)言預(yù)處理、SQL語(yǔ)句分析、過(guò)程語(yǔ)句分析以及中間代碼生成等功能。PL/SQL語(yǔ)句塊輸入后,由語(yǔ)言預(yù)處理功能分離成SQL語(yǔ)句和過(guò)程語(yǔ)句。對(duì)于SQL語(yǔ)句,由GKD-Base SQL引擎解析后,建立SQL語(yǔ)句結(jié)點(diǎn),進(jìn)行相應(yīng)的變量綁定和語(yǔ)法檢查,檢查無(wú)誤后產(chǎn)生語(yǔ)法樹(shù)形式的中間代碼。對(duì)于過(guò)程語(yǔ)句,將語(yǔ)句成分進(jìn)行語(yǔ)法分析,在分析中把聲明的變量和數(shù)據(jù)類型加入到符號(hào)表中,同時(shí)也產(chǎn)生語(yǔ)法樹(shù)形式的中間代碼。
  后端解釋執(zhí)行器的功能就是對(duì)前端編譯器生成的中間代碼進(jìn)行解釋執(zhí)行。因此在結(jié)構(gòu)上,解釋執(zhí)行器與編譯器對(duì)應(yīng),也有過(guò)程語(yǔ)句執(zhí)行模塊和SQL語(yǔ)句執(zhí)行模塊。過(guò)程語(yǔ)句解釋執(zhí)行器解釋執(zhí)行過(guò)程語(yǔ)句的中間代碼,SQL命令則直接由SQL引擎執(zhí)行。另外,解釋器還包括例外處理模塊,負(fù)責(zé)錯(cuò)誤檢查和報(bào)告。
  符號(hào)表是一個(gè)包含程序中的變量、自定義類型和函數(shù)信息的數(shù)據(jù)庫(kù),它是GKD-Base PL/SQL引擎的核心數(shù)據(jù)結(jié)構(gòu)。它以一個(gè)關(guān)鍵字域(通常是一個(gè)符號(hào)的名字)為索引,一個(gè)關(guān)鍵字域的值對(duì)應(yīng)于庫(kù)中的一條記錄。每條記錄,即數(shù)據(jù)庫(kù)的一個(gè)項(xiàng)目,都對(duì)應(yīng)著一個(gè)符號(hào)的信息,如變量的類型或函數(shù)的返回值等。
2 GKD-Base PL/SQL過(guò)程與函數(shù)語(yǔ)言成分設(shè)計(jì)
  子程序" title="子程序">子程序把功能獨(dú)立并需要反復(fù)用到的代碼加以參數(shù)化處理,從而整合為一個(gè)命名模塊,在要使用這個(gè)模塊時(shí)就傳入具體參數(shù)值(如果需要)進(jìn)行調(diào)用。與第三代語(yǔ)言中的子程序一樣,GKD-Base PL/SQL過(guò)程與函數(shù)是特定功能的邏輯抽象,由子程序定義和引用組成,可以分為過(guò)程和函數(shù)兩種類別。PL/SQL子程序可以分開(kāi)編譯并存儲(chǔ)到數(shù)據(jù)庫(kù)中,用CREATE 語(yǔ)句建立,并成為模式對(duì)象的一部分。存儲(chǔ)過(guò)程/函數(shù)可以位于包結(jié)構(gòu)中,包分為包聲明和包體實(shí)現(xiàn)部分。本地過(guò)程/函數(shù)在DECLARE 節(jié)中的最后部分進(jìn)行,而作為存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù)將存儲(chǔ)在數(shù)據(jù)庫(kù)中,它們是命名的PL/SQL塊。這樣它們?cè)诮Y(jié)構(gòu)上也就沒(méi)有特別之處了。下面主要討論形參和實(shí)參的綁定設(shè)計(jì)。
  PL/SQL 函數(shù)中的參數(shù)說(shuō)明帶有輸入和輸出描述,需要在編譯時(shí)刻進(jìn)行處理,并對(duì)調(diào)用時(shí)的參數(shù)類型是否相容進(jìn)行檢查。但在PL/SQL過(guò)程和函數(shù)的聲明中,限制CHAR、VARCHAR2參數(shù)的長(zhǎng)度以及限制NUMBER的精度都是非法的。這是由于在調(diào)用一個(gè)函數(shù)時(shí),實(shí)際參數(shù)的取值被傳遞進(jìn)去,在函數(shù)內(nèi)部通過(guò)使用形式參數(shù)來(lái)引用這些實(shí)際參數(shù),不僅實(shí)際數(shù)值被傳遞進(jìn)去,而且作為參數(shù)傳遞機(jī)制的一部分,對(duì)于這些變量的限制也被傳遞進(jìn)去。例如:
  創(chuàng)建函數(shù):
  CREATE OR REPLACE FUNCTION ParameterLength (p_Var1 IN OUT VARCHAR2)
  RETURN VARCHAR2 AS
  BEGIN
    p_Var1:=′This is an example′;
    RETURN p_Var1; 
  END ParameterLength;
  調(diào)用函數(shù):
  DECLARE
  v_Variable1 VARCHAR (30);
  v_Variable2 VARCHAR (30);
  BEGIN
    v_Variable2:= ParameterLength (v_Variable1);
  END;
  上述調(diào)用將使p_Var1變量的最大長(zhǎng)度為30(來(lái)自實(shí)參)。而如果將v_Variable1的長(zhǎng)度定義成10,將產(chǎn)生錯(cuò)誤。這個(gè)錯(cuò)誤的產(chǎn)生不是過(guò)程設(shè)計(jì)不好,而是因?yàn)檎{(diào)用該過(guò)程的代碼發(fā)生了問(wèn)題。值得注意的是:在過(guò)程定義中如果使用%TYPE作為形參類型的限制,而基準(zhǔn)類型又是受限的,那么該限制將作用于形式參數(shù)而不是實(shí)際參數(shù)。
  在缺省參數(shù)值的處理方式上,即當(dāng)調(diào)用時(shí),沒(méi)有指明實(shí)際值時(shí),就用缺省值。對(duì)使用缺省值的形式參數(shù),通常需要把它們放到參數(shù)表的末尾,這樣無(wú)論使用位置標(biāo)識(shí)法還是帶名標(biāo)識(shí)法都可以。
3 GKD-Base存儲(chǔ)函數(shù)實(shí)現(xiàn)的關(guān)鍵技術(shù)
3.1函數(shù)管理器

  GKD-Base PL/SQL引擎對(duì)PL/SQL程序的解釋執(zhí)行都通過(guò)一個(gè)內(nèi)部統(tǒng)一的入口,解釋器把語(yǔ)法樹(shù)載入到入口內(nèi)部的一個(gè)默認(rèn)的主控函數(shù),由這個(gè)函數(shù)驅(qū)動(dòng)對(duì)其解釋執(zhí)行。這樣處理的主要目的是為了兼容子程序的語(yǔ)法分析和保持解釋器運(yùn)轉(zhuǎn)機(jī)制的一致性。因?yàn)樽映绦蚓褪荘L/SQL程序中命名的語(yǔ)句塊,用戶調(diào)用子程序時(shí),PL/SQL引擎可以再次調(diào)用內(nèi)部主控函數(shù)對(duì)其進(jìn)行處理,并提交解釋器執(zhí)行。
  PL/SQL子程序包括局部聲明子程序和存儲(chǔ)子程序。為了管理和調(diào)用局部聲明子程序,設(shè)計(jì)了函數(shù)管理器,如圖2。函數(shù)管理器內(nèi)部定義了一系列數(shù)據(jù)結(jié)構(gòu)來(lái)描述局部聲明子程序調(diào)用的各種屬性,提供各種宏調(diào)用來(lái)獲取局部聲明子程序調(diào)用的參數(shù)和返回值,并提供必要的支持函數(shù)。從某種角度看,函數(shù)管理器也是用來(lái)存放各種局部聲明函數(shù)和過(guò)程信息的“符號(hào)表”,因?yàn)樵诠芾砥髦羞€包括對(duì)聲明子程序聲明和調(diào)用信息的存儲(chǔ)、查找等功能。函數(shù)管理器提供一種結(jié)構(gòu)化的處理手段,以一種統(tǒng)一的方式實(shí)現(xiàn)對(duì)局部聲明子程序的調(diào)用。這種“統(tǒng)一”表現(xiàn)在:每個(gè)局部聲明子程序都在函數(shù)管理器中獲得一個(gè)識(shí)別號(hào)(Oid),這個(gè)識(shí)別號(hào)唯一標(biāo)識(shí)該局部聲明子程序;函數(shù)管理器維持一份記錄表格,其中存放所有局部聲明子程序的識(shí)別號(hào)、子程序名、子程序地址、參數(shù)個(gè)數(shù)和返回值類型等信息,同時(shí)接口還提供相應(yīng)的查找功能,源程序中的局部聲明子程序調(diào)用會(huì)被轉(zhuǎn)換成為子程序的識(shí)別號(hào)并通過(guò)該識(shí)別號(hào)查找得到子程序的詳細(xì)信息。


  所有局部聲明子程序都在函數(shù)管理器中進(jìn)行注冊(cè),存儲(chǔ)子程序并不在函數(shù)管理器中注冊(cè),而是保存在數(shù)據(jù)庫(kù)中。對(duì)于一個(gè)子程序調(diào)用,首先根據(jù)子程序名到函數(shù)管理器中查找;如果沒(méi)有在函數(shù)管理器中找到再去查找數(shù)據(jù)庫(kù),這樣就兼容了Oracle PL/SQL V2.3局部聲明子程序的定義優(yōu)先于存儲(chǔ)子程序的規(guī)則。
3.2 執(zhí)行狀態(tài)堆棧
  在GKD-Base PL/SQL引擎的解釋執(zhí)行器中,設(shè)計(jì)了一個(gè) “執(zhí)行狀態(tài)”的數(shù)據(jù)結(jié)構(gòu),其中記載了存儲(chǔ)函數(shù)的執(zhí)行狀態(tài)信息,如函數(shù)中的聲明變量、函數(shù)的參數(shù)個(gè)數(shù)、函數(shù)的參數(shù)類型、函數(shù)每個(gè)參數(shù)的值、函數(shù)的返回值等。解釋器中所有的解釋函數(shù)都擁有一個(gè)指針參數(shù)指向這個(gè)結(jié)構(gòu),需要在這些函數(shù)間傳遞的信息(包括全局變量信息)將被拷貝到這個(gè)結(jié)構(gòu)。考慮到存儲(chǔ)函數(shù)是個(gè)單獨(dú)的PL/SQL語(yǔ)句塊層次,因此設(shè)計(jì)了執(zhí)行狀態(tài)堆棧。在調(diào)用存儲(chǔ)函數(shù)前,對(duì)當(dāng)前的現(xiàn)場(chǎng)進(jìn)行保存,也就是將當(dāng)前的執(zhí)行狀態(tài)壓棧;在存儲(chǔ)函數(shù)調(diào)用結(jié)束之后恢復(fù)保存的現(xiàn)場(chǎng),彈出當(dāng)前執(zhí)行狀態(tài),回到上一層執(zhí)行狀態(tài)繼續(xù)執(zhí)行,如圖3。


3.3 存儲(chǔ)函數(shù)的創(chuàng)建和調(diào)用
  用戶創(chuàng)建的存儲(chǔ)函數(shù)經(jīng)過(guò)編譯得到中間代碼并保存在GKD-Base的中間代碼庫(kù)中。函數(shù)調(diào)用時(shí),根據(jù)函數(shù)名到GKD-Base的中間代碼庫(kù)中查找相應(yīng)存儲(chǔ)函數(shù)的中間代碼對(duì)其解釋執(zhí)行,最后得到返回值。GKD-Base存儲(chǔ)函數(shù)的創(chuàng)建和調(diào)用分別對(duì)應(yīng)中間代碼的產(chǎn)生和執(zhí)行過(guò)程。
  PL/SQL引擎對(duì)存儲(chǔ)函數(shù)的創(chuàng)建的具體處理過(guò)程如下:
  ①編譯器得到用戶創(chuàng)建的存儲(chǔ)函數(shù);
  ②對(duì)用戶創(chuàng)建的存儲(chǔ)過(guò)程進(jìn)行編譯,如果編譯通過(guò)則生成該存儲(chǔ)函數(shù)的語(yǔ)法樹(shù);否則向用戶報(bào)告錯(cuò)誤;
  ③將存儲(chǔ)函數(shù)中間代碼保存在中間代碼庫(kù)中;存儲(chǔ)函數(shù)的源代碼保存在GKD-Base的系統(tǒng)表中,如表1;
  ④向用戶返回消息。
  根據(jù)Oracle PL/SQL V2.3 語(yǔ)言規(guī)范,存儲(chǔ)函數(shù)調(diào)用本身不是一個(gè)語(yǔ)句,它只能作為其它語(yǔ)句的一部分。PL/SQL引擎對(duì)存儲(chǔ)函數(shù)的調(diào)用的具體過(guò)程如圖4:
  ①解釋器中語(yǔ)句鏈的解釋函數(shù)調(diào)用存儲(chǔ)函數(shù)的解釋函數(shù);
  ②解釋器在執(zhí)行存儲(chǔ)函數(shù)之前,對(duì)當(dāng)前的現(xiàn)場(chǎng)進(jìn)行保存,即將當(dāng)前的執(zhí)行狀態(tài)壓棧;
  ③到數(shù)據(jù)庫(kù)的中間代碼庫(kù)中找到存儲(chǔ)函數(shù)的語(yǔ)法樹(shù),把存儲(chǔ)函數(shù)的語(yǔ)法樹(shù)掛在整個(gè)PL/SQL語(yǔ)句塊語(yǔ)法樹(shù)的過(guò)程調(diào)用節(jié)點(diǎn)上,并提交解釋器;
  ④解釋器執(zhí)行存儲(chǔ)函數(shù)中間代碼;
  ⑤解釋器在存儲(chǔ)函數(shù)調(diào)用結(jié)束后,將返回值返回給調(diào)用它的語(yǔ)句,并恢復(fù)保存的現(xiàn)場(chǎng),彈出當(dāng)前執(zhí)行狀態(tài),回到上一層執(zhí)行狀態(tài)繼續(xù)執(zhí)行。


3.4 存儲(chǔ)函數(shù)的參數(shù)傳遞機(jī)制
  上述存儲(chǔ)函數(shù)調(diào)用過(guò)程中的一個(gè)主要難點(diǎn)就是實(shí)際參數(shù)和形式參數(shù)之間值的傳遞。與其它第三代語(yǔ)言一樣,用戶可以創(chuàng)建帶參數(shù)的PL/SQL存儲(chǔ)函數(shù)。這些參數(shù)可以通過(guò)值進(jìn)行傳遞,也可以通過(guò)引用進(jìn)行傳遞。
  GKD-Base PL/SQL引擎對(duì)存儲(chǔ)函數(shù)的形式參數(shù)的處理與對(duì)變量的處理是一致的,每個(gè)形式參數(shù)的屬性信息對(duì)應(yīng)著符號(hào)表中的一條記錄,形式參數(shù)的名字信息保存在相應(yīng)的名字堆棧層次內(nèi)。如本文第三部分所述,存儲(chǔ)函數(shù)的語(yǔ)法樹(shù)也是由解釋器載入到一個(gè)內(nèi)部默認(rèn)的主控函數(shù),由這個(gè)函數(shù)驅(qū)動(dòng)對(duì)其解釋執(zhí)行。解釋器內(nèi)部的主控函數(shù)驅(qū)動(dòng)存儲(chǔ)函數(shù)中所有變量的初始化,也驅(qū)動(dòng)實(shí)際參數(shù)和形式參數(shù)之間值的傳遞。編譯器解析過(guò)程調(diào)用語(yǔ)句得到實(shí)際參數(shù)信息,首先判斷實(shí)際參數(shù)和形式參數(shù)的數(shù)據(jù)類型是否匹配,經(jīng)過(guò)類型檢查后,如果實(shí)際參數(shù)是常量或普通變量,直接將實(shí)際參數(shù)的值拷貝給形式參數(shù);如果實(shí)際參數(shù)是表達(dá)式,計(jì)算表達(dá)式的值傳給形式參數(shù);如果存儲(chǔ)函數(shù)的形式參數(shù)個(gè)數(shù)大于解析得到的實(shí)際參數(shù)個(gè)數(shù),二者之差為n,那么前面的形式參數(shù)取實(shí)際參數(shù)的值,后n個(gè)形式參數(shù)取語(yǔ)法樹(shù)中對(duì)應(yīng)的缺省值。
  在Oracle PL/SQL V2.3中,存儲(chǔ)函數(shù)的形式參數(shù)有三種模式:IN、OUT或INOUT。當(dāng)調(diào)用函數(shù)時(shí),對(duì)IN參數(shù),實(shí)際參數(shù)的值傳遞給過(guò)程,函數(shù)結(jié)束后,實(shí)際參數(shù)沒(méi)有被改變;對(duì)OUT參數(shù),實(shí)際參數(shù)的任何值都被忽略,形式參數(shù)有一個(gè)NULL值,函數(shù)結(jié)束后,形式參數(shù)的內(nèi)容賦給實(shí)際參數(shù);對(duì)INOUT參數(shù),實(shí)際參數(shù)的值傳遞給過(guò)程,函數(shù)結(jié)束后,形式參數(shù)的內(nèi)容賦給實(shí)際參數(shù)。同時(shí)在存儲(chǔ)函數(shù)內(nèi)部,對(duì)IN參數(shù)賦值和把OUT參數(shù)賦給局部變量都是非法操作。
  在GKD-Base PL/SQL引擎中實(shí)現(xiàn)存儲(chǔ)函數(shù)三種形式參數(shù)模式的關(guān)鍵是執(zhí)行前后實(shí)際參數(shù)和形式參數(shù)的值的相互正確傳遞。在執(zhí)行存儲(chǔ)函數(shù)中間代碼前,判斷每個(gè)形式參數(shù)的模式,如果參數(shù)模式是IN或INOUT,直接把實(shí)際參數(shù)的值傳遞給形式參數(shù);如果模式是OUT,直接賦給形式參數(shù)一個(gè)初始的NULL值。對(duì)函數(shù)執(zhí)行體內(nèi)的賦值語(yǔ)句進(jìn)行判斷檢查,如果賦值目標(biāo)是IN參數(shù)或把OUT參數(shù)賦給其它變量,都報(bào)告相應(yīng)的執(zhí)行錯(cuò)誤。函數(shù)執(zhí)行結(jié)束后,解釋器彈出當(dāng)前執(zhí)行狀態(tài),回到上一層執(zhí)行狀態(tài)繼續(xù)執(zhí)行。對(duì)IN參數(shù),實(shí)際參數(shù)直接取其本身的值,即實(shí)際參數(shù)沒(méi)有改變;對(duì)OUT參數(shù)和INOUT參數(shù),根據(jù)執(zhí)行前形式參數(shù)和實(shí)際參數(shù)的對(duì)應(yīng)關(guān)系,用執(zhí)行完畢后的形式參數(shù)的值替代原來(lái)實(shí)際參數(shù)的值,即執(zhí)行完后形式參數(shù)的內(nèi)容賦給實(shí)際參數(shù)。
  PL/SQL 集成了一般過(guò)程式語(yǔ)言和說(shuō)明性SQL 語(yǔ)言的特點(diǎn),簡(jiǎn)潔、高效,而其內(nèi)容卻十分豐富。這也從一個(gè)方面說(shuō)明了作為過(guò)程式數(shù)據(jù)庫(kù)編程語(yǔ)言,在考慮到底層數(shù)據(jù)庫(kù)功能時(shí)所面臨的各種選擇的艱難。PL/SQL 語(yǔ)言的某些功能將隨著ORACLE 數(shù)據(jù)庫(kù)的發(fā)展而繼續(xù)增強(qiáng),但是該語(yǔ)言的結(jié)構(gòu)是基本穩(wěn)定的。本文參照Oracle PL/SQL V2.3 語(yǔ)言規(guī)范,在某安全數(shù)據(jù)庫(kù)管理系統(tǒng)GKD-Base上開(kāi)發(fā)了PL/SQL引擎作為該系統(tǒng)的重要擴(kuò)充,并在該引擎基礎(chǔ)上實(shí)現(xiàn)了GKD-Base存儲(chǔ)函數(shù)機(jī)制,提供給用戶一種高效率的編程手段,增強(qiáng)了GKD-Base的功能。希望本文實(shí)現(xiàn)的PL/SQL引擎能對(duì)國(guó)產(chǎn)數(shù)據(jù)庫(kù)的開(kāi)發(fā)起到借鑒作用。當(dāng)然PL/SQL 語(yǔ)言內(nèi)容十分豐富,本文不可能涉及到每一個(gè)設(shè)計(jì)細(xì)節(jié),PL/SQL 還在進(jìn)一步發(fā)展,值得繼續(xù)關(guān)注。
  為了進(jìn)一步擴(kuò)展GKD-Base在安全保密領(lǐng)域的應(yīng)用前景,筆者將在對(duì)GKD-Base本身進(jìn)一步完善的同時(shí),繼續(xù)對(duì)GKD-Base PL/SQL引擎進(jìn)行完善和改進(jìn)。一方面在功能上實(shí)現(xiàn)封裝函數(shù)和過(guò)程的包;另一方面,在性能上對(duì)原有GKD-Base PL/SQL引擎進(jìn)行優(yōu)化以提高編譯和執(zhí)行效率。
參考文獻(xiàn)
1 Ken Henderson. The Guru′s Guide to Transact-SQL. AddisonWesley PuB Co., 2000
2 PostgreSQL 7.4 Documentation.The PostgreSQL GloBal Development Group, 2003
3 Kenneth C.Louden著,馮博琴譯.編譯原理及實(shí)踐.北京:機(jī)械工業(yè)出版社,2000
4 Hector Garcia-Molina,Jeffrey D. Ullman,Jennifer Widom著.楊東青,唐世渭,徐其鈞譯. 數(shù)據(jù)庫(kù)系統(tǒng)實(shí)現(xiàn). 北京:機(jī)械工業(yè)出版社,2001
5 Levine,J.R.,lex與yacc(第二版).北京:機(jī)械工業(yè)出版社,2003

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 完全免费av| 精品一区二区三区无码免费视频 | 小sao货水好多真紧h国产 | 欧美人与禽猛交乱配视频 | 无码人妻精品丰满熟妇区 | 国产亚洲视频在线播放香蕉 | 中国少妇xxxxxbbbbb | 久久zyz资源站无码中文动漫 | 亚洲国产综合无码一区 | a级毛片高清免费视频 | 黄网av | 国产伦精品一区二区三 | 流白浆视频 | 99黄色片 | 91麻豆精品国产91久久久点播时间 | 小辣椒福利视频导航 | 成人做爰100部片免费下载 | 国产亚洲第一伦理片在线c 国产亚洲精品久久久久动 国产亚洲精品久久久久久大师 | 伊人一区 | 夜色伊人 | 骚虎av| 国产成人福利 | 草草影院ccyy国产日本第一页 | 少妇高潮喷水惨叫久久久久电影 | 超碰97人人射妻 | 中文字幕无码人妻aaa片 | 一级淫片a看免费 | 中文日产乱幕九区无线码 | 全球av集中精品导航福利 | 国产欧美日韩视频在线观看 | 国产免费无码一区二区视频 | 三级av网站 | 久久久久久久久久免费 | 国产成人主播 | 91精品婷婷国产综合久久竹菊 | 全国最大成人网 | 亚洲天堂视频在线观看免费 | 96精品高清视频在线观看软件 | 色av一区二区 | 夫妻性生活黄色大片 | 毛片中文字幕 | 三级网站 | 超碰97久久国产精品牛牛 | 太深太粗太爽太猛了视频免费观看 | 草久久| 无码国产精品一区二区免费i6 | 色欲精品国产一区二区三区av | 国产成人av综合色 | 久久久久成人网站 | 少妇精品偷拍高潮少妇 | 欧美一区二区三区四区五区六区 | 精品国产粉嫩内射白浆内射双马尾 | 成人网页在线观看 | 免费看国产精品 | 亚洲国产日韩a在线播放性色 | 国产精品免费观看视频 | 欧美性猛交xxx嘿人猛交 | 国产国产精品人在线视 | 日本黄色美女 | 精品国产鲁一鲁一区二区张丽 | 台湾亚洲精品一区二区tv | 午夜视频网 | 婷婷伊人久久大香线蕉av | 国产三级漂亮女教师 | 国产精品国产三级国产av中文 | 96国产精品久久久久aⅴ四区 | 国产专区av| 已婚少妇露脸日出白浆 | 精精国产 | 欧美成人性生交大片免费看 | 亚洲最大成人综合网720p | 欧美三级小说 | 国产一级aa大片毛片 | 色婷婷av一区二区三区gif | 国产精品毛片完整版视频 | 国产在线精品观看 | 色妞www精品视频 | 性调教学院高h学校 | 成年午夜性影院 | 亚洲免费在线播放 | 99re热这里只有精品视频 | 国产区图片区小说区亚洲区 | 国产亚洲tv在线观看 | 天天操狠狠操夜夜操 | 108种啪姿势大全动态图 | 国产一区二区精品久久 | 亚洲一区二区三区影院 | 欧美日韩亚洲国产另类 | 国产又粗又猛又黄又爽无遮挡 | 狠狠色先锋资源网 | 99精品国产一区二区三区2021 | 免费va人成视频网站全 | 日韩中文字幕第一页 | 超碰导航 | 久久国产精品成人片免费 | 欧美怡红院视频一区二区三区 | 久久久精品国产一区二区三区 | 亚洲精品国产精华液 | 无码午夜人妻一区二区不卡视频 | 91禁在线观看 | 日韩黄色影片 | 久久三区| 精精国产xxxx视频在线 | 性色av免费 | 国产最新进精品视频 | 日韩欧美小视频 | 伦理片在线播放无遮无挡 | 97免费人妻无码视频 | 国产成人小视频在线观看 | 亚洲黄色av网站 | 国产精品情侣呻吟对白视频 | 十八18禁国产精品www | 中文无码一区二区三区在线观看 | 在线观看日韩 | 91一区二区三区四区 | 国产真实夫妇交换视频 | 日日干网站 | 天天摸天天操天天爽 | 国产精品69午夜妇大片 | 97自拍视频 | 中文日韩欧美 | 亚洲成在人网站无码天堂 | 伊人网在线免费观看 | caoprom超碰 | 亚洲国产aⅴ精品一区二区 亚洲国产mv | 国产无套免费网站69 | 99久久精品国产毛片 | 92av视频 | 免费视频二区 | 日韩在线永久免费播放 | av动漫精品 | 国产精品夜间视频香蕉 | 在线视频亚洲欧美 | 亚洲亚洲人成综合网络 | 中国精学生妹品射精久久 | 国产精品一二三区视频 | 欧美日韩一二三四区 | 日韩爱爱免费视频 | 韩国精品在线 | 欧美与黑人午夜性猛交久久久 | 免费gogo少妇大尺寸视频 | av国产片 | www99视频| 亚洲国产精品区 | 婷婷色六月天 | 亚洲色www成人永久网址 | 男女无套免费视频网站动漫 | 夜色福利| 日本肉体xxxx裸交 | 色婷婷久久综合 | 国产男女无套在线播放 | 亚州精品视频 | 国产一区日韩二区欧美三区 | 天天操天天操天天操天天操天天操 | 妇女伦子伦视频高清在线 | 久久乐国产精品亚洲综合 | 国产精品国产高清国产av | 国产乱码精品 | 国产乱人伦偷精品视频不卡 | 欧美男人天堂 | 欧美xxxx精品另类 | 国产变态口味重另类 | av无码不卡一区二区三区 | 国产日产精品一区二区三区四区介绍 | 日韩成人免费观看视频 | 日本精品人妻无码免费大全 | 天天操网 | 中文字幕亚洲精品一区 | 青青草原亚洲 | 在线播放毛片 | 久久99国产精品视频 | 日本不卡在线播放 | 丰满少妇大力进入av亚洲 | 男女做羞羞在线观看 | 乱淫av | 蜜臀av性久久久久蜜臀aⅴ | 国产韩国精品一区二区三区 | 国产精品成人va在线观看 | 久久久激情视频 | 少妇高潮一区二区三区 | 国产又粗又大又长 | 中国一级一级全黄 | 国产大片黄在线观看 | 激情五月视频 | 欧美性折磨bdsm激情另类视频 | 欧美在线免费 | 蜜臀一区| 又粗又硬又猛又黄网站在线观看高清观看视频 | 国产精品爽爽久久久久久竹菊 | 三级av免费看 | 亚洲婷婷av | 催眠淫辱の教室3在线观看 村上凉子在线播放av88 | 特黄特色三级在线观看 | av片国产| 免费成人国产 | 色婷婷av久久久久久久 | 日韩亚洲影院 | 久久99国产精品久久99果冻传媒 | 日韩av在线免费观看 | 国产三级理论 | 日本视频精品 | 国产精品一区二区性色av | 18禁无遮挡免费视频网站 | 久久精品视频在线看15 | 清纯粉嫩极品夜夜嗨av | 国产精品久久久久久久久福交 | 亚洲精品ww久久久久久p站 | 五月激情六月丁香 | 国产黄色www | 欧美成人a交片免费看 | 青草青草久热国产精品 | 国产后入又长又硬 | 免费视频成人 | 天堂а√中文最新版地址在线 | 国产日韩一区二区在线 | 中文字幕日产乱码一二三区 | 国产亚洲精品日韩在线tv黄 | 亚洲男女 | 撕开奶罩揉吮奶头高潮av | 一本一道久久a久久精品蜜桃 | 国产-第1页-浮力影院 | 欧美一级黄色毛片 | 日韩国产精品一区二区三区 | 欧美一区二区不卡视频 | 国产精品美女久久久免费 | 青青草原综合网 | 欧美一区在线看 | www.爱操| 蜜臀av午夜一区二区三区 | 精品久久久久久无码免费 | 吃奶摸下激烈视频学生软件 | 午夜性刺激免费看视频 | 成人性生活毛片 | 欧美日韩午夜群交多人轮换 | 国产99久久九九精品的功能介绍 | 久久久久久伊人 | 国产露脸对白刺激2022 | 毛片永久新网址首页 | 91久久视频 | www国产亚洲精品久久麻豆 | 国产乱国产乱300精品 | 日本三级全黄少妇三2023 | 91视频专区| 欧美三级午夜理伦三级老人 | 国产精品久久久久久久久久 | 精品少妇一区二区三区免费观 | 天堂中文在线观看视频 | 一卡二卡三卡在线观看 | 久久爽精品区穿丝袜 | 99riav6国产情侣在线看 | 国产麻豆免费视频 | 国产区欧美区日韩区 | 国产乱妇无乱码大黄aa片 | 国产精品福利一区二区 | 一级黄色片视频 | 性荡视频播放在线视频 | 闺蜜互慰吃奶互揉69式磨豆腐 | 40岁成熟女人牲交片 | 亚洲精品成a人在线 | 免费成人国产 | 日韩片在线 | 国产精品一区三区 | 超碰.com| 中文字幕超清在线观看 | 高清不卡一区二区三区 | 青草伊人久久综在合线亚洲观看 | 亚洲无套| 亚洲成人av一区二区三区 | 久久精品国产一区二区电影 | 粉嫩少妇内射浓精videos | 九九九九九九伊人 | 国产成人精品a视频一区www | av一区不卡 | 久久久国产精品一区 | 精品国产亚洲一区 | 亚洲人一区 | 国产成人精品999 | 日本午夜精华 | 亚色一区 | 2022精品国偷自产免费观看 | 最新中文字幕在线视频 | 男女动漫18动漫免费 | 中文字幕人妻无码一区二区三区 | 91精品视频在线免费观看 | 日日婷婷夜日日天干 | 久久精品视频久久 | 黄色一级片在线播放 | 超碰在线国产 | 亚洲中文字幕无码久久 | 人人爽人人爽人人片av | 成人免费视频播放 | 女同中文字幕 | 久久免费一区 | 国产超碰人人爽人人做人人爱 | 久久视频这里有久久精品视频11 | 久久久久9999亚洲精品 | 国产精品99一区二区三区 | 18禁美女黄网站色大片免费看 | 亚洲破处视频 | 国产午夜福利100集发布 | 免费观看黄色一级视频 | 处破女处破av | 欧美性一区二区 | 少妇被粗大的猛进69视频 | 男女性潮高清免费网站 | 成人性视频欧美一区二区三区 | 国产三级黄色毛片 | 免费不卡毛片 | 国产又白又嫩又紧又爽18p | 色播综合| 日韩一级高清 | 啪啪黄色网址 | 国产四区视频 | 日本午夜免费 | 久久99国产精品成人 | 三级毛片儿 | 肉色超薄丝袜脚交一区二区 | 日日摸夜夜添夜夜添欧美毛片小说 | 日韩精品视频一区二区三区 | 亚洲综合图色40p | 国产吴梦梦无套系列 | 小鲜肉自慰网站xnxx | 国产精品久久久久久无毒不卡 | 欧美永久精品 | 91视频中文字幕 | 国产中文字幕视频 | 免费视频二区 | 夜夜躁天天躁很很躁 | 疯狂做受xxxx欧美肥白少妇 | 欧美寡妇xxxx黑人猛交 | 91亚洲国产精品 | 国产九九热 | 噜噜狠狠狠狠综合久久 | 亚洲色无码一区二区三区 | 青青国产精品视频 | 成人黄色大全 | 日韩女同互慰一区二区 | 天堂国产 | 人妻丝袜中文无码av影音先锋专区 | 亚洲国产精品福利 | 男女性杂交内射女bbwxz | 性人久久久久 | 亚洲精品一区二区三区不卡 | 免费欧美一级 | 视频一二区 | 午夜天堂精品久久久久 | 四虎成人精品无码永久在线 | 成人影院免费 | 久久久亚洲精品石原莉奈 | 欧洲美熟女乱又伦av影片 | 色哟哟入口国产精品 | 久久久久香蕉国产线看观看伊 | 日本在线黄色 | 国产欧美亚洲精品a | 一本一道波多野结衣av中文 | 明星换脸av一区二区三区网站 | 精品久久久免费视频 | 国精产品国语对白东北 | 亚洲一区精品视频在线观看 | 催眠调教后宫乱淫校园 | 中国黄色免费网站 | 91黑丝美女| 黄色一级录像片 | 日韩一级完整毛片 | 饥渴丰满的少妇喷潮 | 中文字幕另类 | 热热热av| 尤物国产在线 | 中文字幕在线播放av | 日韩成人免费在线观看 | 国产又粗又猛又爽 | 女国产精品视频一区二区三区 | 性高爱久久久久久久久 | 国产亚洲精品久久777777 | 久久久久国色av免费看图片 | 在线观看视频一区 | 最新av观看 | 91午夜在线观看 | 久久中文字幕在线观看 | 精品国产亚洲第一区二区三区 | 一区二区影视 | 日本老小玩hd老少配 | 欧美一区视频在线 | 黄色成人在线视频 | 欧美性生交大片免费视频 | 看个毛片| 国产一区二区日本 | 欧美黄色影院 | 日本熟妇色一本在线观看 | 男女高潮网站 | 一本色道久久综合狠狠躁邻居 | 毛片无遮挡高清免费观看 | 桃色网站在线观看 | 国产偷国产偷精品高清尤物 | 97自拍视频在线 | 亚洲成av人片一区二区 | 一本久道高清无码视频 | 一区一区三区四区产品动漫 | 人妻仑乱少妇av级毛片 | 边吃奶边添下面好爽 | 日韩欧美在线免费 | 91色影院| 区二三区四区精华日产一线二线三 | 毛片女人18片毛片点击进入 | 亚洲精品中文字幕制 | 天天干天天操天天玩 | jyzz中国jizz十八岁免费 | 成人免费看片 | 成人香蕉视频在线观看 | 少妇粗大进出白浆嘿嘿视频 | 欧美成人午夜影院 | 免费三级网 | 日本一级免费视频 | 国产下药迷倒白嫩丰满美女j8 | 成人羞羞视频免费看看 | 丰满熟女人妻中文字幕免费 | 女人18毛片水真多 | 波多野结衣一二三区 | 精品久久久久久久久久岛国gif | 大江大河第3部48集在线观看 | 好大好硬好爽免费视频 | 色综合视频一区二区三区44 | 丝袜tk一丨视频vk | 欧美日韩一区二区三区视频播放 | 国偷自产av一区二区三区麻豆 | 少妇高潮尖叫黑人激情在线 | 毛片黄片免费看 | 一级生活毛片 | 夜夜骑首页 | 国内精品一区二区 | 一级黄视频 | 久久久精品2019免费观看 | 18在线观看视频网站 | 国产91一区二区三区 | 99国产精品久久久久久久日本竹 | 国精产品999国精产品蜜臀 | 青草青草视频2免费观看 | 亚洲爱爱网| 欧美色精品 | 首页 国产 欧美 日韩 丝袜 | 天堂av资源在线 | 黄色a一级| 日韩欧美在线观看一区二区三区 | 搞逼综合网 | 亚洲视频网 | 噜噜视频 | 久久久啊啊啊 | 欧美成人a∨高清免费观看 欧美成人aa | 伊人免费在线观看 | 欧美激情一区二区三区p站 欧美激情一区二区三区蜜桃视频 | 日本午夜精华 | 日日夜夜天天操 | 美女131爽爽爽 | 亚洲欧美日韩国产成人 | 男女激情啪啪18 | 精区一品二品星空传媒 | 亚洲午夜福利av一区二区无码 | 中文字幕乱码人妻一区二区三区 | 国产一区中文字幕 | 亚洲精品免费视频 | 99精品国产99久久久久久白柏 | 亚洲精品久久久久国产 | 国产精品久久福利网站 | 999综合网 | 伊人久久大香线蕉av一区 | 高h av| 另类天堂网 | 成人性做爰aaa片免费看不忠 | 在线观看日韩欧美 | 久久久com| 色小妹av| 两性色午夜视频免费播放 | 国产激情з∠视频一区二区 | 人妻少妇精品中文字幕av蜜桃 | 亚洲成av人片在www色猫咪 | 婷婷成人av| 岛国大片在线观看 | 在线播放污 | 一级片在线免费观看 | 亚洲精品视频三区 | 乱子伦一区二区三区 | 欧美xxxx黑人xyx性爽 | 一级性生活大片 | 这里只有精品999 | 男人的天堂av网站 | 婷婷深爱| 天堂8在线天堂资源bt | 后入内射欧美99二区视频 | 午夜| 亚洲精品综合五月久久小说 | 欲求不满的岳中文字幕 | 亚洲国产av无码精品 | 久久久久久人妻无码 | 久草在线色站 | 一级做性色α爱片久久毛片色 | 久久综合伊人77777蜜臀 | 麻豆久久久久 | 国产一区二区午夜 | 亚洲免费黄色 | 日本公与丰满熄理论在线播放 | 成人亚洲在线 | 午夜精品国产精品大乳美女 | 精品夜夜澡人妻无码av蜜桃 | 性欧美另类 | 欧美在线观看视频 | 老牛嫩草一区二区三区消防 | 丰满少妇人妻hd高清大乳在线 | 国产永久免费观看久久黄av片 | 国产毛片儿 | 欧美老妇大p毛茸茸 | 99在线精品视频免费观看软件 | h欧美| 亚洲精品国产综合 | 蜜桃成人在线视频 | 喷潮在线| 一对一色视频聊天a | 免费在线国产视频 | 久久网一区 | 免费观看亚洲视频 | 国产在线精品国自产拍影院同性 | 人妖精品videosex性欧美 | 日韩欧美在线视频 | 久久99精品国产麻豆 | 色无极亚洲色图 | 成人av福利| 一个人看的毛片 | 欧美成年人视频在线观看 | 国产女爽爽精品视频天美传媒 | 精品人伦一区二区三区潘金莲 | 欧美成人短视频 | 天天操天天射天天爽 | 国产成人剧情av麻豆果冻 | 成 人 免费观看网站 | 成年人在线观看视频网站 | 色噜噜狠狠色综合成人网 | 国产欠欠欠18一区二区 | 亚洲高清在线看 | 日本精品啪啪一区二区三区 | 51免费看成人啪啪片 | 99久久国产宗和精品1上映 | 2020无码专区人妻系列日韩 | 单亲陪读乱淫口述 | 亚洲啪啪aⅴ一区二区三区9色 | 爱草在线 | 日韩精品中文字幕一区二区三区 | 69式视频| 国产老女人乱淫免费可以 | 精品久久久无码中文字幕边打电话 | 人成在线免费视频 | 中出乱码av亚洲精品久久天堂 | 日韩精品中文字幕一区二区 | 视频国产在线 | 黄色毛片在线 | 色黄大色黄女片免费中国 | 日本精品国产 | 无码国产乱人伦偷精品视频 | 日本福利社 | 少妇高潮一区二区三区 | 99精品欧美一区二区三区小说 | 精品一区二区三区免费视频 | 国产精品6999成人免费视频 | 不卡中文字幕在线观看 | 中文字幕中文字幕 | 亚洲精品国产第一综合99久久 | 天天天干干干 | 久久精品亚洲日本波多野结衣 | 欧美性极品 | 女人下面流白浆的视频 | 九九精品免费视频 | 亚洲成a人片77777kkkk | 亚洲国产午夜 | 噜噜噜久久亚洲精品国产品 | 西西44rtwww国产精品 | 日本一区二区久久 | 人人爱人人澡 | 亚a∨国av综av涩涩涩 | 亚洲国产精品久久人人爱 | 免费三级黄| 亚洲高清久久 | xxx久久 | 亚洲国产婷婷六月丁香 | 成人性生交大片免费看r视频 | 久久亚洲精品小早川怜子 | www色黄 | 日本伦片免费观看 | 亚洲欧美精品无码一区二区三区 | 狠狠干少妇 | 成人羞羞视频播放网站 | 精品人妻无码专区在线无广告视频 | 在线免费观看日韩av | 品久久久久久久久久96高清 | 新版天堂资源中文8在线 | 国产又粗又猛又爽又黄av | 日本一区二区黄色 | 韩国日本在线观看 | 美女视频黄频大全免费 | 欧美巨大双龙性猛交乱大 | 国产边打电话边被躁视频 | 亚洲精品一区三区三区在线观看 | 人人婷婷人人澡人人爽 | 老司机午夜在线 | av噜噜| 久久午夜电影网 | 一级黄色片大全 | 亚洲v国产v欧美v久久久久久 | 国产人与禽zoz0性伦在线 | 亡は夫の上司中文字幕 | 已婚少妇美妙人妻系列 | 亚洲成人综合网站 | 中文字幕一区二区三区人妻少妇 | 亚洲国产精品va在线看黑人动漫 | 欧美一级不卡视频 | www夜夜爱 | 免费人成在线观看网站品爱网 | 亚洲中文字幕无码天然素人在线 |