日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Oracle之PLSQL总结

發布時間:2023/12/4 数据库 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle之PLSQL总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基本數據類型變量

??? 1. 基本數據類型 ??? Number 數字型 ??? Int 整數型 ??? Pls_integer 整數型,產生溢出時出現錯誤 Binary_integer 整數型,表示帶符號的整數 ??? Char 定長字符型,最大255個字符
??? Varchar2 變長字符型,最大2000個字符 ??? Long 變長字符型,最長2GB ??? Date 日期型
??? Boolean 布爾型(TRUE、FALSE、NULL三者取一) ??? 在PL/SQL中使用的數據類型和Oracle數據庫中使用的數據類型,有的含義是完全一致的,有的是有不同的含義的。

??? 2. 基本數據類型變量的定義方法 ??? 變量名 類型標識符 [not null]:=值; ??? declare ??????? age number(3):=26; --長度為3,初始值為26 ??? begin ??????? commit; ??? end; ??? 其中,定義常量的語法格式: ??? 常量名 constant 類型標識符 [not null]:=值; ??? declare ??????? pi constant number(9):=3.1415926;--為pi的數字型常量,長度為9,初始值為3.1415926 ??? begin ??????? commit; ??? end;

表達式

??? 變量、常量經常需要組成各種表達式來進行運算,下面介紹在PL/SQL中常見表達式的運算規則。 ??? ??? 1. 數值表達式 ??? PL/SQL程序中的數值表達式是由數值型常數、變量、函數和算術運算符組成的,可以使用的算術運算符包括+(加法)、-(減法)、*(乘法)、/(除法

)和**(乘方)等。 ??? 命令窗口中執行下列PL/SQL程序,該程序定義了名為result的整數型變量,計算的是10+3*4-20+5**2的值,理論結果應該是27。 ??? ――――――――――――――――――――――――――――――――――――― ??? set serveroutput on ??? Declare ?????? result integer; ??? begin ?????? result:=10+3*4-20+5**2; ?????? dbms_output.put_line('運算結果是:'||to_char(result)); ??? end; ??? ――――――――――――――――――――――――――――――――――――― ??? dbms_output.put_line函數輸出只能是字符串,因此利用to_char函數將數值型結果轉換為字符型。 ??? ??? 2. 字符表達式 ??? 字符表達式由字符型常數、變量、函數和字符運算符組成,唯一可以使用的字符運算符就是連接運算符“||”。 ??? ??? 3. 關系表達式 ??? 關系表達式由字符表達式或數值表達式與關系運算符組成,可以使用的關系運算符包括以下9種。 ??? < 小于 ??? > 大于 ??? = 等于(不是賦值運算符:=) ??? like 類似于 ??? in 在……之中 ??? <= 小于等于 ??? >= 大于等于 ??? != 不等于 或<> ??? between 在……之間 ??? 關系型表達式運算符兩邊的表達式的數據類型必須一致。 ??? 4. 邏輯表達式 ??? 邏輯表達式由邏輯常數、變量、函數和邏輯運算符組成,常見的邏輯運算符包括以下3種。 ??? NOT:邏輯非 ??? OR:邏輯或 ??? AND:邏輯與 ??? 運算的優先次序為NOT、AND和OR。

PLSQL函數

??? PL/SQL程序中提供了很多函數供擴展功能,除了標準SQL語言的函數可以使用外,最常見的數據類型轉換函數有以下3個。 ??? To_char:將其他類型數據轉換為字符型。 ??? To_date:將其他類型數據轉換為日期型。 ??? To_number:將其他類型數據轉換為數值型。 ??? 繼續追加中..

系統輸出打印

??? 利用pl/sql在數據庫服務器端打印一句話: ??? set serveroutput on--設置數據庫輸出,默認為關閉,每次重新打開窗口需要重新設置。 ??? BEGIN ??????? DBMS_OUTPUT.PUT_LINE('Hello PL/SQL'); ??? END;

pl/sql程序中對大小寫不敏感(打印聲明的變量) ?? ――――――――――――――――――――――――――――――――――――― ??? set serveroutput on ??? DECLARE ????? v_char varchar2(20):='a'; ????? v_char1 varchar2(20):='b'; ??? BEGIN ????? DBMS_OUTPUT.PUT_LINE(v_char); ????? DBMS_OUTPUT.PUT_LINE(v_char1); ??? END;
pl語句塊是pl/sql里最小的編程塊,其中可以再嵌套begin end ??? begin ???? dbms_output.put_line('Hello World'); ???? dbms_output.put_line('2*3='||(2*3)); ???? dbms_output.put_line('what''s'); ??? end; ?? ―――――――――――――――――――――――――――――――――――――

PL/SQL中的變量聲明

? 所有變量必須在declare中聲明,程序中不允許聲明。 ? 沒有初始化的變量默認值為null,屏幕上null是看不見的,命名習慣:PL/SQL中變量一般以v_開頭(等同于存儲過程中as和begin區域的變量定義習慣)。 ? 注意number也能存小數,最長38位,所以以后建議整數都用binary_integer存。 ? long是字符類型,boolean類型不能打印。 ? 標準變量類型:數字,字符,時間,布爾。 ?? ――――――――――――――――――――――――――――――――――――― ??? declare v_number1 number; v_number2 number(3,2) ; v_number3 binary_integer :=1; v_name varchar2(20) :='kettas'; v_date date :=sysdate; v_long long :='ni hao'; v_b boolean := true; ??? begin if (v_number1 is null) then ? dbms_output.put_line( 'hello'); end if; dbms_output.put_line(v_number1); dbms_output.put_line(v_number2); dbms_output.put_line(v_number3); dbms_output.put_line(v_name); dbms_output.put_line(v_date); dbms_output.put_line(v_long); ????? --dbms_output.put_line(v_b); --執行該句ORACLE提示“調用 'PUT_LINE' 時參數個數或類型錯誤” ??? end; ?? ―――――――――――――――――――――――――――――――――――――

?? 備注: ?? 關于聲明number(4,3)中括號中的兩個數字的意義,前面的數字叫精度,后面的叫刻度。 ?? 刻度: ???? 當刻度為正數的時候,表示四舍五入到小數點后面的位數 ???? 當刻度為負數的時候,表示四舍五入到小數點前面的位數 ?? 精度: ???? 從數字的最前面不為零開始到刻度精確到的位置 ?? v_Number number(4,3):=123.12312 ?? 1、按刻度進行四舍五入得到123.123 ?? 2、確定刻度精確到的位置123123處,精度為6位(.符號不算) ?? 2、根據精度進行判斷6位(>4)精度上限值? --報錯不能存儲 ?? number(3,-3):=44445 ?? 1、根據刻度-3進行四舍五入得到44000 ?? 2、小數點向前移動3位44.此位置為刻度精確到的位置 ?? 3、根據精度進行判斷2位(<3)精度上限值? --不報錯可存儲結果為44000 ?? ?? DECLARE ???? v_Number number(4,3):=123.12312;--實際精度6位大于上限精度值4位,提示“ORA-06502: PL/SQL: 數字或值錯誤 :? 數值精度太高” ?? BEGIN ???? DBMS_OUTPUT.PUT_LINE(v_Number); ?? END ?? ; ?? ?? DECLARE ???? v_Number number(7,3):=4555; --實際精度7位等于上限精度值,可以存儲 ?? BEGIN ???? DBMS_OUTPUT.PUT_LINE(v_Number); ?? END ?? ; ??
***************************************** ? 變量賦值方式 ***************************************** oracle中變量賦值方式是值拷貝而非引用 ??
?? declare ?????? v_number1 number:=100; ?????? v_number2 number; ?? begin ?????? v_number2:=v_number1; ?????? v_number1:=200; ?????? dbms_output.put_line(v_number1); --200 ?????? dbms_output.put_line(v_number2); --100 ?? end; ?
***************************************** ? PLSQL復合類型 ***************************************** 記錄類型record record類型最常用,聲明的時候可以加not null,但必須給初始值,如果record類型一致可以相互賦值,如果類型不同,里面的字段恰好相同,不能互相賦值。引用記錄型變量的方法是“記錄變量名.基本類型變量名”。 ? ――――――――――――――――――――――――――――――――――――― ? declare ?????? type t_first is record( ??????????? id number(3), ??????????? name varchar2(20) ?????? ); ?????? v_first t_first; ? begin ???? v_first.id:=1; ???? v_first.name:='cheng'; ???? dbms_output.put_line(v_first.id); ???? dbms_output.put_line(v_first.name); ? end;

? record類型變量間賦值 ? declare ?????? type t_first is record( ???????? id number, ???????? name varchar2(20)?? ?????? ); ?????? v_first t_first; ?????? v_second t_first; ? begin ?????? v_first.id:=1; ?????? v_first.name:='susu'; ?????? ?????? v_second:=v_first;--相互賦值 ?????? ?????? v_first.id:=2; ?????? v_first.name:='kettas'; ?????? dbms_output.put_line(v_first.id); ?????? dbms_output.put_line(v_first.name); ?????? dbms_output.put_line(v_second.id); ?????? dbms_output.put_line(v_second.name); ?? end; ?? ――――――――――――――――――――――――――――――――――――― 表類型變量table 語法如下: ??? type 表類型 is table of 類型 index by binary_integer; ??? 表變量名 表類型; 類型可以是前面的類型定義,index by binary_integer子句代表以符號整數為索引,這樣訪問表類型變量中的數據方法就是“表變量名(索引符號整數)”。table類型,相當于java中的Map容器,就是一個可變長的數組,key(符號整數索引)必須是整數,可以是負數,value(類型)可以是標量,也可以是record類型??梢圆话错樞蛸x值,但必須先賦值后使用。

1. 定義一維表類型變量 ?? ――――――――――――――――――――――――――――――――――――― ?? declare ??????? type t_tb is table of varchar2(20) index by binary_integer; ??????? v_tb t_tb; ?? begin ????? v_tb(100):='hello'; ????? v_tb(98):='world'; ????? dbms_output.put_line(v_tb(100)); ????? dbms_output.put_line(v_tb(98)); ?? end;????

?? 類型為record的表類型變量 ?? declare ??????? type t_rd is record(id number,name varchar2(20)); ??????? type t_tb is table of t_rd index by binary_integer; ??????? v_tb2 t_tb; ?? begin ??????? v_tb2(100).id:=1; ??????? v_tb2(100).name:='hello'; ??????? --dbms_output.put_line(v_tb2(100).id); ??????? --dbms_output.put_line(v_tb2(100).name); ??????? dbms_output.put_line(v_tb2(100).id||'??? '||v_tb2(100).name); ?? end; ?? ―――――――――――――――――――――――――――――――――――――

2. 定義多維表類型變量 該程序定義了名為tabletype1的多維表類型,相當于多維數組,table1是多維表類型變量,將數據表tempuser.testtable中recordnumber為60的記錄提取出來

存放在table1中并顯示。 ?? ――――――――――――――――――――――――――――――――――――― ?? declare ????? type tabletype1 is table of testtable%rowtype index by binary_integer; ????? table1 tabletype1; ?? begin ?????? select * into table1(60) from tempuser.testtable where recordnumber=60; ?????? dbms_output.put_line(table1(60).recordnumber||table1(60).currentdate); ?? end; ?? ?? 備注:在定義好的表類型變量里,可以使用count、delete、first、last、next、exists和prior等屬性進行操作,使用方法為“表變量名.屬性”,返回的是數字。 ???
?? set serveroutput on ?? declare ??????? type tabletype1 is table of varchar2(9) index by binary_integer; ??????? table1 tabletype1; ?? begin ??????? table1(1):='成都市'; ??????? table1(2):='北京市'; ??????? table1(3):='青島市'; ??????? dbms_output.put_line('總記錄數:'||to_char(table1.count)); ??????? dbms_output.put_line('第一條記錄:'||table1.first); ??????? dbms_output.put_line('最后條記錄:'||table1.last); ??????? dbms_output.put_line('第二條的前一條記錄:'||table1.prior(2)); ??????? dbms_output.put_line('第二條的后一條記錄:'||table1.next(2)); ??? end; ??? ―――――――――――――――――――――――――――――――――――――

***************************************** ???? %type和%rowtype ***************************************** 使用%type定義變量,為了讓PL/SQL中變量的類型和數據表中的字段的數據類型一致,Oracle 9i提供了%type定義方法。這樣當數據表的字段類型修改后,PL/SQL程序中相應變量的類型也自動修改。 ??? ――――――――――――――――――――――――――――――――――――― ??? create table student( ?????? id number, ?????? name varchar2(20), ?????? age number(3,0) ??? );

??? insert into student(id,name,age) values(1,'susu',23); ??? --查找一個字段的變量

??? declare ?????? v_name varchar2(20); ?????? v_name2 student.name%type; ??? begin ?????? select name into v_name2 from student where rownum=1; ?????? dbms_output.put_line(v_name2); ??? end;

??? --查找多個字段的變量 ??? declare ??????? v_id student.id%type; ??????? v_name student.name%type; ??????? v_age student.age%type; ??? begin ????? select id,name,age into v_id,v_name,v_age from student where rownum=1; ????? dbms_output.put_line(v_id||'? '||v_name||'? '||v_age); ??? end;

??? --查找一個類型的變量,推薦用*

??? declare ?????? v_student student%rowtype; ??? begin ?????? select * into v_student from student where rownum=1; ?????? dbms_output.put_line(v_student.id||'? '||v_student.name||'? '||v_student.age); ??? end;

??? --也可以按字段查找,但是字段順序必須一樣,不推薦這樣做 ??? declare ?????? v_student student%rowtype; ??? begin ???? select id,name,age into v_student from student where rownum=1; ???? dbms_output.put_line(v_student.id||'? '||v_student.name||'? '||v_student.age); ??? end;

??? declare ?????? v_student student%rowtype; ??? begin ???? select id,name,age into v_student.id,v_student.name,v_student.age from student where id=1; ???? --select * into v_student.id,v_student.name,v_student.age from student where id=1; ???? dbms_output.put_line(); ??? end; ??? ――――――――――――――――――――――――――――――――――――― ??? 備注:insert,update,delete,select都可以,create table,drop table不行。DPL,DML,和流程控制語句可以在pl/sql里用,但DDL語句不行。 ??? ??? declare ?????? v_name student.name%type:='wang'; ??? begin ?????? insert into student(id,name,age) values(2,v_name,26); ??? end; ??? ??? begin ?????? insert into student(id,name,age) values(5,'hehe',25); ??? end;

??? declare ?????? v_name student.name%type:='hexian'; ??? begin ?????? update student set name=v_name where id=1; ??? end;

??? begin ?????? update student set name='qinaide' where id=2; ??? end; ??? ――――――――――――――――――――――――――――――――――――― ***************************************** ?? PLSQL變量的可見空間 ***************************************** 變量的作用域和可見性,變量的作用域為變量申明開始到當前語句塊結束。當外部過程和內嵌過程定義了相同名字的變量的時候,在內嵌過程中如果直接寫這個變量名是沒有辦法訪問外部過程的變量的,可以通過給外部過程定義一個名字<<outername>>,通過outername變量名來訪問外部過程的變量(待測試..)。 ??? ――――――――――――――――――――――――――――――――――――― ??? declare ??????????? v_i1 binary_integer:=1; ??? begin ???????? declare ??????????? v_i2 binary_integer:=2; ???????? begin ??????????? dbms_output.put_line(v_i1); ??????????? dbms_output.put_line(v_i2); ???????? end; ????? dbms_output.put_line(v_i1); ??? --dbms_output.put_line(v_i2);? 解開后執行Oracle會提示“必須說明標識符 'V_I2'” ??? end; ??? ―――――――――――――――――――――――――――――――――――――

***************************************** ?? PLSQL流程控制 ***************************************** if判斷 declare ?????? v_b boolean:=true; begin if v_b then ???????? dbms_output.put_line('ok'); ????? end if; end;

if else判斷 declare ??????? v_b boolean:=true; begin ???? if v_b then ??????? dbms_output.put_line('ok'); ???? else ??????? dbms_output.put_line('false'); ???? end if; end;

if elsif else判斷 declare ??????? v_name varchar2(20):='cheng'; begin ???? if v_name='0701' then ??????? dbms_output.put_line('0701'); ???? elsif v_name='cheng' then ??????? dbms_output.put_line('cheng'); ???? else ??????? dbms_output.put_line('false'); ???? end if; end;

loop循環,注意推出exit是推出循環,而不是推出整個代碼塊 declare ?????? v_i binary_integer:=0; begin ???? loop ???????? if v_i>10 then ??????????? exit; ???????? end if; ???????? v_i:=v_i+1; ???????? dbms_output.put_line('hehe'); ???? end loop; ???????? dbms_output.put_line('over'); end;

loop簡化寫法 declare ?????? v_i binary_integer :=0; begin ???? loop ???????? exit when v_i>10; ???????? v_i :=v_i+1; ???????? dbms_output.put_line('hehe'); ???? end loop; ???????? dbms_output.put_line('over'); end;

while循環 declare ?????? v_i binary_integer:=0; begin ?????? while v_i<10 loop ???????????? dbms_output.put_line('hello'||v_i ); ???????????? v_i:=v_i+1; ?????? end loop; ?????? dbms_output.put_line('over'); end;

for循環,注意不需要聲明變量 begin ???? for v_i in 0..10 loop ???????? dbms_output.put_line('hello'||v_i); ???? end loop; ???????? dbms_output.put_line('over'); end;

***************************************** ???? PLSQL異常處理 ***************************************** 1、聲明異常 異常名 EXCEPTION; 2、拋出異常 RAISE 異常名 3、處理異常 拋出異常后的邏輯代碼不會被繼續執行

異常的定義使用 ??? ――――――――――――――――――――――――――――――――――――― ??? begin ???? ???? dbms_output.put_line(1/0); ??? exception ??????????? when others then ??????????????? dbms_output.put_line('error'); ??? end;

??? declare ??????????? e_myException exception; ??? begin ??????????? dbms_output.put_line('hello'); ??????????? raise e_myException; --raise拋出異常,用此關鍵字,拋出后轉到自定義的e_myException ,執行其里面的putline函數后,再跳到end處,結束PL/SQL塊,raise接下面的2句不會繼續執行。 ??????????? dbms_output.put_line('world'); ??????????? dbms_output.put_line(1/0); ??? exception ??????????? when e_myException then ??????????????? dbms_output.put_line(sqlcode); --當前會話執行狀態,錯誤編碼 ??????????????? dbms_output.put_line(sqlerrm); --當前錯誤信息 ??????????????? dbms_output.put_line('my error'); ??????????? when others then ??????????????? dbms_output.put_line('error'); ??? end; ??? ――――――――――――――――――――――――――――――――――――― ***************************************** ? PLSQL游標和goto語句 ***************************************** 備注:下面提到的游標為靜態cursor,包括顯示和隱式。 游標,從declare、open、fetch、close是一個完整的生命旅程。當然了一個這樣的游標是可以被多次open進行使用的,顯式cursor是靜態cursor,她的作用域是全局的,但也必須明白,靜態cursor也只有pl/sql代碼才可以使用它。靜態游標變量是在定義時就必須指定SQL語句。

cursor 游標(結果集)用于提取多行數據,定義后不會有數據,使用后才有。一旦游標被打開,就無法再次打開(可以先關閉,再打開)。 ??? declare ????????? cursor c_student is? select * from book; ??? begin ????????? open c_student; ????????? close c_student; ??? end;

第二種游標的定義方式,用變量控制結果集的數量。 ??? declare ????????? v_id binary_integer; ????????? cursor c_student is select * from book where id>v_id; ??? begin ????????? v_id:=10; ????????? open c_student; ????????? close c_student; ??? end;

第三種游標的定義方式,帶參數的游標,用的最多。 ??? declare ????????? cursor c_student(v_id binary_integer) is select * from book where id>v_id; ??? begin ????????? open c_student(10); ????????? close c_student; ??? end;

游標的使用,一定別忘了關游標。 ??? declare ????????? v_student book%rowtype; ????????? cursor c_student(v_id binary_integer) is select * from book where id>v_id; ??? begin ????????? open c_student(10); ????????? fetch c_student into v_student; ????????? close c_student; ????????? dbms_output.put_line(v_student.name); ??? end;

如何遍歷游標fetch ? 游標的屬性 %found,%notfound,%isopen,%rowcount。 ? %found:若前面的fetch語句返回一行數據,則%found返回true,如果對未打開的游標使用則報ORA-1001異常。 ? %notfound,與%found行為相反。 ? %isopen,判斷游標是否打開。 ? %rowcount:當前游標的指針位移量,到目前位置游標所檢索的數據行的個數,若未打開就引用,返回ORA-1001。

注: no_data_found和%notfound的用法是有區別的,小結如下 1)SELECT . . . INTO 語句觸發 no_data_found; 2)當一個顯式光標(靜態和動態)的 where 子句未找到時觸發 %notfound; 3)當UPDATE或DELETE 語句的where 子句未找到時觸發 sql%notfound; 4)在光標的提取(Fetch)循環中要用 %notfound 或%found 來確定循環的退出條件,不要用no_data_found。

下面是幾個實例: create table BOOK ( ? ID?????? VARCHAR2(10) not null, ? BOOKNAME VARCHAR2(10) not null, ? PRICE??? VARCHAR2(10) not null, ? CID????? VARCHAR2(10) not null );

--insert create or replace procedure say_hello( i_name in varchar2, o_result_msg out varchar2 ) ???? as ???? v_price varchar2(100); ???? e_myException exception;

???? begin ??????? insert into book(id,bookname,price) values (1,2,3); ??????? o_result_msg := 'success'; ???? exception ??????? when others then ???????????? rollback; ???????????? o_result_msg := substr(sqlerrm, 1, 200); ???? end;

--update or delete create or replace procedure say_hello( i_name in varchar2, o_result_msg out varchar2 ) ???? as ???? v_price varchar2(100); ???? e_myException exception;

???? begin ??????? update book set price = '55' where bookname = i_name; ??????? delete from book where bookname = i_name; ??????? if sql%notfound then ?????????? raise e_myException; ??????? end if; ??????? /* if sql%rowcount = 0 then--寫法2 ?????????? raise e_myException; ??????? end if; */ ??????? o_result_msg := 'success'; ???? exception ??????? when e_myException then ???????????? rollback; ???????????? o_result_msg := 'update or delete dail'; ???? end;

--select create or replace procedure say_hello( i_name in varchar2, o_result_msg out varchar2 ) ???? as ???? v_price varchar2(100); ???? e_myException exception;

???? begin ??????? select price into v_price from book where bookname = i_name; ??????? o_result_msg := 'success'; ???? exception ??????? when no_data_found then ???????????? rollback; ???????????? o_result_msg := 'select into dail'; ???? end;
loop方式遍歷游標 ??? declare ????????? v_bookname? varchar2(100); ????????? cursor c_book(i_id number) is select bookname from book where id = i_id; ??? begin ??????? Open? c_book(i_id); ??????? Loop ??????????? Fetch c_book into v_bookname; ??????????? exit when c_student%notfound; ????????????? update book set price = '33' where bookname = v_bookname; ??????? End Loop; ??????? Close c_book; ??? end; ??? ??? declare ????????? v_bookname? varchar2(100); ????????? cursor c_book(i_id number) is select bookname from book where id = i_id; ??? begin ??????? Open? c_book(i_id); ????????? Fetch c_book into v_bookname; ????????? While c_book%Found ????????? Loop ????????????? update book set price = '33' where bookname = v_bookname; ????????? Fetch? c_book into v_bookname; ????????? End Loop; ??????? Close c_book; ??? end; ?? ????

while循環遍歷游標,注意,第一次游標剛打開就fetch,%found為null,進不去循環 解決方法:while nvl(c_student%found,true) loop ??? declare ???????? v_bookname? varchar2(100); ???????? cursor c_book(i_id number) is select bookname from book where id = i_id; ??? begin ???????? Open? c_book(i_id); ???????? while nvl(c_book%found,true) --或這種寫法:while c_book%found is null or c_book%found loop??? ???????????? Fetch c_book into v_bookname; ???????????? update book set price = '33' where bookname = v_bookname; ???????? End Loop; ???????? Close c_book; ??? end;

for循環遍歷,最簡單,用的最多,不需要 聲明v_student,Open和Close游標和fetch操作(不用打開游標和關閉游標,實現遍歷游標最高效方式) ??? declare ???????? cursor c_book(i_id number) is select bookname from book where id = i_id; ??? begin ???????? for cur in c_book(i_id) --直接將入參i_id傳入cursor即可 ???????? loop ???????????? update book set price = '53' where bookname = cur.bookname; ???????? end loop; ??? end;

goto例子,一般不推薦使用goto,會使程序結構變亂 ??? declare ???????? i number:=0; ??? begin ???????? if i=0 then ???????????? goto hello; ???????? end if; ???????? <<hello>> ???????? begin ???????????? dbms_output.put_line('hello'); ???????????? goto over; ???????? end; ???????? <<world>> ???????? begin ???????????? dbms_output.put_line('world'); ???????????? goto over; ???????? end; ???????? <<over>> ???????????? dbms_output.put_line('over'); ???? end; ***************************************** ?? Oracle存儲過程 ***************************************** 在談存儲過程書寫中的一些規則時,先看一下執行它的規則,在命令窗口執行存儲過程sp_get_product_prompt
???? set serveroutput on ???? var ret1 varchar2(200); ???? var ret2 varchar2(200); ???? exec sp_get_product_prompt(83,:ret1,:ret2); --或execute ???? print ret1; ???? print ret2; ???? ???? set serveroutput on ???? declare ??????? ret1 varchar2(200); ??????? ret2 varchar2(200); ???? begin ??????? sp_get_product_prompt(83,ret1,ret2); ??????? dbms_output.put_line(ret1); ??????? dbms_output.put_line(ret2); ???? end;

存儲過程入參,不論類型,缺省情況下值都為null,入參和出參不能有長度,其中關鍵字as可以替換成is,存儲過程中變量聲明在as和begin之間,同時,存儲過程中可以再調用其它的存儲過程,如果要保證存儲過程之間的事務處理不受影響,可以定義為自治事務。 ???? create or replace procedure say_hello( ?????? v_name in varchar2, ?????? v_flag number, ?????? o_ret out number ???? ) ???? as ???? begin ?????? if v_name is null and v_flag is null then --v_name和v_flag都等于null ?????????? o_ret := 10; ?????? else ?????????? o_ret := 100; ?????? end if; ???? end;

對于入參為null情況下給予缺省值 ???? create or replace procedure say_hello( ?????? i_name in varchar2, ?????? i_flag number, ?????? o_ret out number ???? ) ???? as ?????? v_name? varchar2(100); ???? begin ?????? if i_name is null then ????????? v_name := '0'; ?????? else ????????? v_name := i_name; ?????? end if; ?????? insert into phone(..,wname..,) values(..,v_name,..);? ???? ???? end; 或直接在insert語句中調用nvl函數賦缺省值 ???? insert into phone(..,wname..,) values(..,nvl(v_name,' '),..); ----如果將' '寫成'',則insert進來的v_name值還是為''等價于null值

帶一個參數的存儲過程 ?? 輸入參數in,輸入參數不能進行:=賦值,但可以將它賦給as后面定義的變量; ?? 輸入參數in,可以作為變量進行條件判斷; ?? 默認不寫就是in; ?? 存儲過程沒有重載,這個有參的say_hello會替代已經存在的無參say_hello。

???? create or replace procedure say_hello(v_name in varchar2) ???? as ???? begin ??????? --v_name:='a'; --存儲過程入參v_name不能做為賦值目標 ??????? dbms_output.put_line('hello '||v_name); ???? end;

存儲過程輸入參數作為變量進行條件判斷 ???? create or replace procedure say_hello( ??????? i_opFlag in number ???? ) ???? as ??????? v_name varchar2(100); ???? begin ??????? if i_opFlag = 1 then ??? v_name :='0'; ??????? else ??? v_name :='haha'; ??????? end if; ??????? dbms_output.put_line('hello '||v_name); ???? end;

利用存儲過程中定義的變量對入參的空值處理: ???? create or replace procedure say_hello( ??????? i_name in varchar2 ???? ) ???? as ??????? v_name varchar2(100); ???? begin ??????? if i_name is null then ??? v_name :='0'; ??????? else ??? v_name :=i_name;--將入賦值給定義變量 ??????? end if; ??????? dbms_output.put_line('hello '||v_name); ???? end;

多個參數的存儲過程 ???? create or replace procedure say_hello( ??????? v_first_name in varchar2, ??????? v_last_name in varchar2) ???? as ???? begin ??????? dbms_output.put_line('hello '||v_first_name||'.'||v_last_name); ???? end;

out輸出參數,用于利用存儲過程給一個或多個變量賦值,類似于返回值 ???? create or replace procedure say_hello( ??????? v_name in varchar2, ??????? v_content out varchar2 ???? ) ???? begin ??????? v_content:='hello'||v_name; ???? end;

???? 調用: ???? declare ??????? v_con varchar2(200); ??????? v_in varchar2(20):='wang'; ???? begin ??????? say_hello(v_in,v_con); ??????? dbms_output.put_line(v_con); ???? end;

in out參數,既賦值又取值 ???? create or replace procedure say_hello(v_name in out varchar2) ???? as ???? begin ??????? v_name:='hi '||v_name; ???? end;

???? 調用: ???? declare ??????? v_inout varchar2(20):='wangsu'; ???? begin ??????? say_hello(v_inout); ??????? dbms_output.put_line(v_inout); ???? end;

對存儲過程入參賦缺省值 ???? create or replace procedure say_hello( ??????? v_name varchar2 default 'susu', ??????? v_content varchar2 default 'hello' ???? ) ???? as ???? begin ??????? dbms_output.put_line(v_name||' '||v_content); ???? end;

???? 調用:(用指明形參名的方式調用更好) ???? begin ??????? say_hello(); ???? end; ???? 或 ???? begin ??????? say_hello('cheng'); ???? end; ???? 或 ???? begin ???? say_hello(v_name=>'cheng'); ??? end;

***************************************** PLSQL中的function ***************************************** FUNCTION和PROCEDURE的區別 1、函數有返回值,過程沒有 2、函數調用在一個表達式中,過程則是作為pl/sql程序的一個語句 ? 過程和函數都以編譯后的形式存放在數據庫中,函數可以沒有參數也可以有多個參數并有一個返回值。過程 ? 有零個或多個參數,沒有返回值。函數和過程都可以通過參數列表接收或返回零個或多個值,函數和過程的 ? 主要區別不在于返回值,而在于他們的調用方式,過程是作為一個獨立執行語句調用的,函數以合法的表達 ? 式的方式調用 ??? create or replace function func(v_name in varchar2) ??? return varchar2 ??? is ??? begin ?????? return(v_name||' hello'); ??? end;

??? 調用: ??? declare ?????? v_name varchar2(20); ??? begin ?????? v_name:=func('cheng'); ?????? dbms_output.put_line(v_name); ??? end;

帶out參數的函數 ??? create or replace function func( ?????? v_name in varchar2, ?????? v_content out varchar2 ??? ) ??? return varchar2 ??? is ??? begin ?????? v_content:=v_name||' hello'; ?????? return v_content; ??? end;

??? 調用: ??? declare ?????? v_name varchar2(20); ?????? v_name1 varchar2(20); ??? begin ?????? v_name1:=func('susu',v_name);--返回v_name值 ?????? dbms_output.put_line(v_name1);--打印func結果 ?????? dbms_output.put_line(v_name);--打印v_name結果 ??? end;

帶in out 參數的函數 ??? create or replace function func( ?????? v_name in out varchar2) ??? return varchar2 ??? is ??? begin ?????? v_name:=v_name||' hello'; ?????? return 'cheng'; ??? end;

??? 調用: ??? declare ?????? v_inout varchar2(20):='world'; ?????? v_ret varchar2(20); ??? begin ?????? v_ret:=func(v_inout);--返回調用v_inout值(作為出參) ?????? dbms_output.put_line(v_ret);--打印func結果???? ?????? dbms_output.put_line(v_inout);--返回v_name結果 ??? end;

?

轉載至:http://www.blogjava.net/cheneyfree/archive/2008/07/21/216090.html#216368

轉載于:https://www.cnblogs.com/Ronger/archive/2012/07/16/2594071.html

總結

以上是生活随笔為你收集整理的Oracle之PLSQL总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产免费三级在线观看 | 精品理论片 | 亚洲另类在线视频 | 国产一区欧美日韩 | 亚洲综合黄色 | 尤物一区二区三区 | 日韩不卡高清视频 | 五月天激情婷婷 | 精品国产一区二区三区男人吃奶 | 国产精品一区二区在线观看免费 | 三上悠亚一区二区在线观看 | av天天在线观看 | 免费观看黄 | 欧美性生活免费 | 亚洲第二色 | 国产亚洲精品久久久久久久久久久久 | 日韩天堂在线观看 | 久久新 | 亚洲 欧美 另类人妖 | 天天操综合网站 | 黄色小视频在线观看免费 | 91av在线播放| 天天射天天添 | 人成在线免费视频 | 日本韩国精品在线 | 不卡电影免费在线播放一区 | 91在线看视频免费 | 狠狠色噜噜狠狠狠狠 | 国产探花在线看 | 手机在线观看国产精品 | 99久久er热在这里只有精品66 | 99精品久久久久久久 | 久久久久久久久久国产精品 | 婷婷激情五月 | 国产在线精品视频 | 国产婷婷在线观看 | www.狠狠操 | 少妇按摩av| 国产精品毛片完整版 | 亚洲精品国产第一综合99久久 | 国产日韩精品欧美 | 懂色av一区二区在线播放 | 久久深夜 | 天天爽天天摸 | 欧美 亚洲 另类 激情 另类 | 欧美日韩性视频 | 国产第一页在线播放 | 色婷婷综合久久久 | 深爱婷婷 | 江苏妇搡bbbb搡bbbb | 91视频在线自拍 | 久久在现视频 | 婷婷精品国产一区二区三区日韩 | 色偷偷888欧美精品久久久 | 中文字幕在线影院 | 中文字幕在线一区观看 | www日韩欧美 | 黄色毛片一级 | 四虎视频 | 中文字幕欧美三区 | 中文字幕免费播放 | 天堂av免费观看 | 久久国产欧美日韩 | 99综合电影在线视频 | 四虎国产精品成人免费影视 | 手机av永久免费 | 国产亚洲欧美一区 | 一级成人免费 | 欧美色黄 | 欧美三级免费 | 国产精品欧美精品 | 久久国产精品二国产精品中国洋人 | 成人在线免费av | 91精品一区二区三区久久久久久 | 国产999精品久久久久久麻豆 | 久久综合免费视频 | 国产人在线成免费视频 | 日韩一区二区三区在线观看 | 中文字幕888 | 综合色影院 | 亚洲天天在线 | 成年人免费在线播放 | 国产永久免费高清在线观看视频 | 黄色中文字幕 | 国产96在线 | 久久精品日本啪啪涩涩 | 国产黄色观看 | 日韩三级免费观看 | 日日夜夜操av | 三级黄色大片在线观看 | 欧美美女一级片 | 一区二区成人国产精品 | 久草在线最新视频 | 视频91在线| 久草在线看片 | a久久久久久 | 99999精品视频 | 超碰97免费在线 | 色婷婷九月 | 69久久久| 国产欧美三级 | 亚洲精选久久 | 国产一区二区三区久久久 | 中文字幕中文字幕在线一区 | 亚洲成a人片在线观看网站口工 | 在线观看小视频 | 国产精品一区二区三区四区在线观看 | 日韩视频免费播放 | 成人高清在线观看 | 天天夜夜狠狠操 | 亚洲欧美国产精品va在线观看 | 69精品 | 欧美精品一二 | 天天干天天干天天射 | 5月丁香婷婷综合 | 国产男女爽爽爽免费视频 | 国产精品一区免费观看 | 在线视频一区二区 | av成人免费在线 | 亚洲精品乱码久久久久久蜜桃91 | 亚洲夜夜网 | 久久精品官网 | 久久都是精品 | 91精品国产91久久久久福利 | 久久国产精品99精国产 | 欧美日韩高清在线观看 | 99精品视频免费全部在线 | 亚洲资源在线观看 | 日本最新一区二区三区 | 亚洲综合在线一区二区三区 | 婷婷久草 | 亚洲黄色在线播放 | 亚洲免费一级电影 | 综合精品久久久 | 伊人五月天 | www.夜夜| 韩国av免费看 | 日日夜夜狠狠 | 麻豆综合网 | 天天干天天射天天操 | 97在线看 | 国产精品免费观看久久 | 国产香蕉久久精品综合网 | 草久中文字幕 | 99精品免费久久久久久日本 | 国产精品资源在线观看 | 精品在线看| 天堂av中文字幕 | 在线国产视频 | 成人午夜在线观看 | 久久亚洲婷婷 | 亚洲天堂视频在线 | 中文字幕一区二区在线观看 | 五月天婷婷在线观看视频 | 日日精品 | 久久国产成人午夜av影院潦草 | 久久久精品久久日韩一区综合 | 玖玖在线免费视频 | 久久久久国产一区二区三区四区 | 久草在线免费在线观看 | 91成人精品视频 | 91精品视频观看 | 福利久久久 | 亚洲精品国产综合久久 | 日本不卡久久 | 黄色免费在线视频 | 丁香五婷 | 天天爱天天色 | av在线免费网站 | 久久亚洲私人国产精品va | 亚洲麻豆精品 | 色综合久久精品 | 免费av在 | 日本精品一区二区三区在线播放视频 | 国产美女免费视频 | 国产视频日韩视频欧美视频 | 国产精品久久久久久婷婷天堂 | 五月丁色 | 欧美日韩精品综合 | 日本久久免费视频 | 久久国产精彩视频 | 欧美性色19p | 日韩二区三区 | 中文字幕观看视频 | 国产免费一区二区三区网站免费 | 亚洲乱码国产乱码精品天美传媒 | av黄网站 | 在线www色 | 婷婷在线视频观看 | 最新日本中文字幕 | 国产又粗又硬又长又爽的视频 | 日本在线观看中文字幕无线观看 | 国产成人精品亚洲 | 成年人视频在线免费观看 | www.夜夜操.com | 国产亚洲精品女人久久久久久 | 色噜噜色噜噜 | 国产永久免费高清在线观看视频 | 欧美极品少妇xbxb性爽爽视频 | 97超碰资源站 | 久久夜夜夜 | 在线黄色国产电影 | 国产一级电影免费观看 | av福利电影| 日韩免费播放 | 日韩av免费在线电影 | 日韩在线资源 | 嫩嫩影院理论片 | 久久草视频| 免费性网站 | 日韩色在线 | 久久图 | 人人看97 | 色婷婷综合久久久中文字幕 | 最近免费观看的电影完整版 | 天天操夜夜曰 | 久久精品免费播放 | 一区二区视频在线播放 | 国产精品九九九九九 | 久草在线免费新视频 | 特级毛片网站 | 亚洲成人国产精品 | 最新国产中文字幕 | 国产国产人免费人成免费视频 | 亚洲精品高清视频 | 337p西西人体大胆瓣开下部 | 日日日干 | 亚洲精品美女久久 | 国产精品综合久久久久久 | 激情小说网站亚洲综合网 | 一区二区三区四区免费视频 | 国产精品精品久久久久久 | 国产在线播放一区二区三区 | 亚洲欧美婷婷六月色综合 | 国产一区私人高清影院 | 色婷婷av国产精品 | 国产日韩精品在线 | 永久免费av在线播放 | 国产免费观看久久黄 | 国产精品白浆 | 日韩午夜网站 | 特级a毛片| 探花视频在线观看免费 | av电影免费在线播放 | 97人人模人人爽人人喊网 | 中文字幕免费观看 | 国产小视频免费在线网址 | 波多野结衣久久资源 | 久久精品视频免费播放 | 韩国一区二区在线观看 | 日韩免费视频观看 | 久久色中文字幕 | 久久激情久久 | 日本在线观看一区二区三区 | 91在线免费观看国产 | 在线免费色 | 久久精品视频网 | 激情欧美在线观看 | 在线电影播放 | 欧美日韩性| 9久久精品 | 亚洲美女精品区人人人人 | 在线小视频你懂的 | 日韩欧美一区二区三区黑寡妇 | 日韩免费在线网站 | 国产成人一区二区三区在线观看 | 欧美 亚洲 另类 激情 另类 | 国产99久久久久久免费看 | 欧美精品在线视频 | 色先锋资源网 | 欧美精品久久人人躁人人爽 | 99综合久久 | 国产伦精品一区二区三区高清 | 国产尤物在线 | 婷婷色综合色 | 国产成人精品一区二区三区在线观看 | 7777xxxx| 国产精品大尺度 | 五月开心六月婷婷 | 欧美色综合天天久久综合精品 | 成人免费在线看片 | 五月天免费网站 | 免费在线观看视频一区 | 国产丝袜在线 | 天天天插| 国产专区在线看 | 日韩欧美综合精品 | 欧美坐爱视频 | 六月婷婷色| 国产色在线观看 | 午夜久久网站 | 国产精品12 | 天天操夜夜叫 | 综合激情av | 亚洲精品理论片 | 国产精品女主播一区二区三区 | 韩国在线一区 | 在线观看激情av | 六月天综合网 | 午夜精品一区二区三区在线播放 | 99视频播放 | 欧美色操 | 69国产精品视频免费观看 | www黄色 | 国产专区欧美专区 | 免费看三级黄色片 | 亚洲一二三在线 | 中文字幕av免费观看 | 欧美日本不卡视频 | 亚洲综合导航 | 在线日韩中文 | 久久在线免费观看 | 在线免费观看麻豆视频 | 久久视频在线观看 | 久草久草久草久草 | 国产成人福利 | 精品视频免费 | 亚洲日本一区二区在线 | 亚洲精品高清在线 | 久久这里只有精品23 | 免费黄色av | 超碰在线观看97 | 久久国产日韩 | 精品久久久免费 | 国产精品久久久久av福利动漫 | 91影视成人 | 日韩免费电影一区二区三区 | 国产精品久久久久久a | 欧美乱码精品一区 | 亚洲女同ⅹxx女同tv | av+在线播放在线播放 | 在线看国产 | 日韩一二三在线 | 国产精品www | 韩国一区二区在线观看 | 91视频91自拍 | 免费瑟瑟网站 | 日韩免费观看视频 | 亚洲精品视频在线观看免费视频 | 黄色成人毛片 | 午夜黄色 | 福利视频第一页 | 精品国产诱惑 | 国产精品久久久久久影院 | 欧美日韩91 | 成人免费观看视频网站 | 日本在线成人 | 天天av天天 | 中文字幕亚洲精品在线观看 | 成人欧美一区二区三区黑人麻豆 | 一区免费在线 | 国内精品久久天天躁人人爽 | av韩国在线 | 国产一区电影在线观看 | 国产97超碰| 国产精品自产拍在线观看网站 | 一级黄色大片在线观看 | 亚洲欧美国产精品久久久久 | 三级黄色网络 | 欧美一区二区在线看 | 亚洲女人天堂成人av在线 | 久久视奸 | sesese图片| 国产成人精品av在线观 | 99久久精品一区二区成人 | 欧美精品一区二区在线观看 | 免费色视频网站 | 天天色综合久久 | 欧美激情第八页 | 五月天久久狠狠 | 国产精品视频在线观看 | 国产精品久久久久久久久久久久午 | 一区二区三区 亚洲 | 欧美一级久久久 | 99国产精品一区二区 | 婷婷视频在线 | 韩国在线视频一区 | 中文字幕在线观看完整版电影 | 久草免费电影 | 免费在线色电影 | 亚洲一区二区精品视频 | 色综合小说 | 91亚洲精品视频 | 国产系列在线观看 | 涩涩在线| 日本中出在线观看 | 99久久99久久精品国产片果冰 | 久香蕉| 一区二区不卡视频在线观看 | 亚洲丁香久久久 | 色亚洲网 | 色网站在线免费观看 | av电影免费看 | 中文在线字幕免费观 | 久草爱 | 精品视频网站 | 日韩系列在线 | 免费看精品久久片 | 国产精品永久 | 一级成人免费 | 在线视频日韩欧美 | 亚洲激情一区二区三区 | 免费av网址大全 | 狠狠干夜夜爽 | 亚洲国产精品久久久久婷婷884 | 在线色网站 | 97超碰人人 | 婷婷在线视频 | 久久99爱视频 | 国产不卡片 | 97超碰人人 | 在线视频你懂 | 免费观看全黄做爰大片国产 | 精品国产一区二区三区四区在线观看 | 亚洲一区二区精品3399 | 99精品视频99| 日韩免费一区二区三区 | 香蕉视频亚洲 | 日韩a级黄色 | 精品免费视频 | 九九视频免费在线观看 | 中文字幕一区二区三区久久 | 亚洲精品综合在线观看 | 96看片| 国产亚洲va综合人人澡精品 | 草免费视频 | 91av资源在线| 国产在线播放一区二区 | 亚洲综合五月 | 99久久久久成人国产免费 | 色噜噜狠狠狠狠色综合久不 | www.人人草| 欧美a级一区二区 | 日韩欧美一区二区三区在线观看 | 国产一区二区高清不卡 | 成人午夜网 | 久久热亚洲 | 日本精品va在线观看 | 久操视频在线 | 久久短视频 | 91免费高清观看 | 久久大片 | www五月天com| 国产美女精品在线 | 在线观看免费黄色 | 日韩高清一区在线 | 国产一区二区不卡在线 | 国产91免费观看 | 国产首页 | 亚洲人成综合 | 91精品秘密在线观看 | 久久精品99久久久久久 | 国产一区二区三区免费在线观看 | 91精品久久久久久久久久久久久 | 亚洲三级网 | 亚洲综合五月天 | 韩国精品一区二区三区六区色诱 | 久久成人精品电影 | 婷婷激情五月综合 | 激情欧美xxxx | 国产91精品一区二区麻豆亚洲 | 日韩免费一级电影 | 97人人看 | 欧美激情视频一区二区三区 | 91成人看片| 五月婷婷开心中文字幕 | 美女中文字幕 | 欧美精品九九99久久 | 狠狠干我 | 久久国产精品区 | 亚洲激情网站免费观看 | av看片网| 91久久久久久国产精品 | 欧美日韩精品在线观看视频 | 久草视频视频在线播放 | 色综合久久久久久中文网 | 看v片| 亚洲综合色视频 | 96超碰在线 | 丁香在线观看完整电影视频 | 日韩一级黄色大片 | 一区三区视频 | 亚洲精品网站 | 在线天堂视频 | 69国产成人综合久久精品欧美 | 深爱激情av| 伊人婷婷综合 | 97超碰国产精品 | 久久夜色精品国产欧美乱极品 | 91在线视频 | 久久免费视频8 | 日本久久片 | 国产精品免费观看久久 | 国产亚洲精品免费 | 五月婷婷毛片 | 欧美日韩精品在线一区二区 | 又黄又刺激视频 | 国产色久 | 99久国产 | 狠狠狠狠狠操 | 最新的av网站 | 国产在线一线 | 99久久精品国| 日韩专区av| 天天操天天干天天摸 | 色多多视频在线 | 国产精品爽爽爽 | 日韩精品久久久免费观看夜色 | 一区二区三区日韩视频在线观看 | 国产精品1区2区3区 久久免费视频7 | 国产一区二区视频在线播放 | 国产成人精品亚洲精品 | 日日狠狠| 极品美女被弄高潮视频网站 | 激情综合五月天 | 天天色中文| 天天干天天综合 | 98久久| 国产小视频你懂的 | 九九精品久久 | 在线有码中文字幕 | 欧美成人亚洲成人 | 中文字幕高清 | 91日本在线播放 | 国产精品久久久久久久久久ktv | 国产精品久久久久免费 | 波多野结衣在线观看视频 | 日韩av有码在线 | 999国产精品视频 | 中文字幕一区二区三区久久蜜桃 | 色吧久久 | 999国内精品永久免费视频 | 狠狠狠色丁香婷婷综合激情 | 久福利 | 国产精品久久毛片 | 亚洲精品在线观 | 久久久久成人精品 | 日本少妇高清做爰视频 | 麻豆91在线观看 | 日本精品久久久久久 | 国产不卡免费av | 国产黄色在线看 | 最新成人av | 毛片网站免费 | 国产一区二区久久久 | 久久电影色 | 久草免费在线 | 99在线观看视频网站 | 久久久免费网站 | 欧美精品在线一区 | 久久er99热精品一区二区 | 亚洲高清视频一区二区三区 | 探花在线观看 | 国产精品精品 | 国产午夜三级一区二区三 | av中文字幕网 | 国产精品国产三级国产 | 337p欧美 | 91夜夜夜 | 日韩久久精品一区二区 | 亚洲视频免费在线看 | 国产精品成人在线 | 亚洲三级av| 欧美精品一区二区在线播放 | 香蕉视频在线网站 | 久久久精品视频网站 | 色视频 在线| 亚洲激情p | 欧美日韩亚洲在线观看 | 亚洲黄a | 日本黄色免费在线观看 | 热久久视久久精品18亚洲精品 | 欧美日韩另类在线 | 伊人中文字幕在线 | 色综合天天综合 | 国产一级性生活视频 | 色www精品视频在线观看 | 97色在线观看免费视频 | 日日夜夜草| 蜜桃视频日韩 | 精品视频国产一区 | 国产专区视频在线观看 | 欧美最爽乱淫视频播放 | 婷婷精品视频 | 91资源在线免费观看 | 夜夜躁日日躁狠狠久久88av | 久久国产精品久久精品 | 日韩在线视频免费播放 | 久久久网页 | 91高清完整版在线观看 | 久久综合色天天久久综合图片 | 国产91亚洲| 天天色天| 中文字幕一区2区3区 | 亚洲专区视频在线观看 | 福利久久| 成人免费视频播放 | 99九九热只有国产精品 | 亚洲人成影院在线 | 免费在线看v | 在线观看日本高清mv视频 | 一区二区视频电影在线观看 | 婷婷国产在线观看 | 色网站在线 | 黄色大全免费观看 | 黄色大片免费播放 | 天干啦夜天干天干在线线 | 亚洲黄色区| 免费韩国av | 国产在线观看免 | 黄色aa久久| 久草香蕉在线 | 97超碰人人澡人人爱 | 日本福利视频在线 | 99久久er热在这里只有精品66 | 在线观看激情av | 成人亚洲免费 | 91精品国产成| 成人亚洲精品国产www | 精品一二区 | 亚洲精品国产日韩 | 欧美一级日韩免费不卡 | 一区精品在线 | 亚洲欧洲精品一区二区 | 久久亚洲成人网 | 黄色一级在线视频 | 亚洲人成精品久久久久 | 日日爱夜夜爱 | 欧美极品一区二区三区 | 成人app在线免费观看 | 免费在线观看av网址 | 国产91综合一区在线观看 | 国产 日韩 中文字幕 | 青青河边草观看完整版高清 | 天天操天天干天天操天天干 | 99久久毛片 | 人人爽爽人人 | 99色| 欧美日韩国产高清视频 | 亚洲人成精品久久久久 | 午夜色大片在线观看 | 久久久久欧美精品999 | 国产在线高清 | 91av视频 | 国产精品久久久久久五月尺 | 亚洲天堂网在线视频观看 | www.色国产 | 国产品久精国精产拍 | 欧美成人视 | 一区视频在线 | 欧美日韩中文在线 | 久免费视频 | 99色视频 | 久久国产精品久久精品国产演员表 | 欧美色就是色 | 色婷婷六月天 | 这里只有精彩视频 | 7777精品伊人久久久大香线蕉 | 亚洲精品色视频 | 日本精品一区二区三区在线播放视频 | 超碰97在线看 | 中文字幕资源网 | 欧美日韩高清一区二区 国产亚洲免费看 | 黄色99视频 | 久久综合婷婷国产二区高清 | 999视频精品 | 欧美一级免费高清 | 在线观看韩日电影免费 | av网站在线观看播放 | 国产成人精品av久久 | 日韩视频区| 日本精品视频在线播放 | 日韩电影在线观看一区二区三区 | 婷婷精品国产一区二区三区日韩 | 成人av电影在线播放 | 91av精品| 91麻豆操| 天天射成人| 一本一本久久a久久精品牛牛影视 | 99精品在线免费 | 三级黄色免费片 | 日韩影片在线观看 | 一区二区三区在线不卡 | 日韩在线观看不卡 | 亚洲国产资源 | 一区二区三区精品在线视频 | 久久精品日产第一区二区三区乱码 | 亚洲一级二级三级 | 在线观看黄av | 亚洲国产精品成人精品 | 亚洲欧美在线观看视频 | 亚洲 欧洲av | 亚洲免费国产 | 欧美性精品| 久草网站在线 | 久久免费黄色大片 | 久免费 | 天堂黄色片 | 91在线91| 久草视频在线免费看 | 精品亚洲va在线va天堂资源站 | 欧美另类激情 | 久久国产精品电影 | 99高清视频有精品视频 | 国产成人久久77777精品 | 超碰97国产精品人人cao | 久久免费视频7 | 久久免费视频在线观看 | 免费成人在线电影 | 亚洲欧美视屏 | 456成人精品影院 | 97韩国电影| 国产精品无av码在线观看 | 欧美性生活大片 | 操操日日| 五月婷婷伊人网 | 久久久久久久影院 | 99精品国产在热久久 | 日韩在线观看视频在线 | 国产69精品久久久久99 | 国产91丝袜在线播放动漫 | 免费一级黄色 | 国产精品a久久 | 狠狠色丁香婷婷综合最新地址 | 亚洲视频每日更新 | 久久成人午夜视频 | 亚洲精品国产自产拍在线观看 | 日韩久久午夜一级啪啪 | 久久精品高清视频 | 欧美精品久久久久久久久免 | 经典三级一区 | 国产一区在线不卡 | 色婷婷九月| 中文超碰字幕 | 久久精品国产免费看久久精品 | 天天干天天摸 | 欧美一级看片 | 91视频亚洲| 最新超碰| 色九色| 国产成免费视频 | 九九热免费视频在线观看 | 99精品视频免费全部在线 | 亚洲欧美成人 | 一区二区视频电影在线观看 | 不卡中文字幕在线 | 久久久国产精品人人片99精片欧美一 | 在线欧美a | 国产一二三四在线观看视频 | 伊人www22综合色 | 奇米影音四色 | 精品在线小视频 | 在线视频观看亚洲 | 99精品一区二区三区 | 国产成人久久精品一区二区三区 | 婷婷夜夜 | 在线精品视频免费观看 | 天天激情综合 | 狠狠狠色 | 精品日韩中文字幕 | 日韩一级成人av | 亚洲成人黄 | 天天爽天天爽夜夜爽 | 国产中文字幕在线免费观看 | 日日碰狠狠添天天爽超碰97久久 | 亚洲激情综合网 | 97视频在线免费观看 | 深夜免费网站 | 国产精品区免费视频 | 亚洲va在线va天堂va偷拍 | 色妞久久福利网 | 久久国产精品99久久人人澡 | 97超碰香蕉| 色香蕉在线 | 国产日韩精品一区二区三区 | 亚洲欧美日韩一级 | 国产精品 日韩 | 中文字幕精品www乱入免费视频 | av在线播放一区二区三区 | 久久久精品电影 | 亚洲精品tv久久久久久久久久 | 特级片免费看 | 亚洲日本激情 | 久久美女精品 | 日韩资源在线播放 | 国产一区二区电影在线观看 | 狠狠的日| 四虎国产精品成人免费影视 | 99精品视频免费全部在线 | 久久久亚洲成人 | 久久视频这里有久久精品视频11 | 911精品美国片911久久久 | 亚洲天堂免费视频 | 久久a级片 | 亚洲精品视频在线观看免费视频 | 久久综合狠狠综合久久激情 | 国产中文字幕视频在线 | 国产69精品久久99的直播节目 | 国产91精品欧美 | 亚洲另类视频在线观看 | 国产无套精品久久久久久 | 成人一级影视 | 日韩av网站在线播放 | 久久久资源网 | 在线观看岛国av | 亚洲作爱视频 | 91在线麻豆 | 免费福利视频网 | 欧美韩国日本在线观看 | 亚洲综合视频在线观看 | 久久久久成人免费 | 人人添人人澡人人澡人人人爽 | 国产精品完整版 | 又爽又黄又无遮挡网站动态图 | 亚洲一区二区三区在线看 | 色综合天天干 | 91丝袜美腿 | 久久精品99国产精品亚洲最刺激 | av在线一级 | av爱干| 激情五月综合 | 91亚洲精品久久久蜜桃网站 | 91在线免费观看国产 | av电影中文字幕在线观看 | 国产精品va在线观看入 | 五月天综合婷婷 | 国产亚洲欧美在线视频 | 亚洲国产99 | 天天操天天干天天插 | 免费观看视频的网站 | 成年人免费av网站 | 伊人影院在线观看 | 国产精品一区二区三区视频免费 | 黄色的视频网站 | 国产一区免费观看 | www.夜夜爽 | 免费三级黄色片 | 中文字幕在线观看一区二区 | 超碰在线94 | 久久久精品视频网站 | 国产又粗又猛又爽又黄的视频免费 | 国产剧在线观看片 | 国产午夜精品一区二区三区嫩草 | av解说在线 | 狠狠色丁香婷综合久久 | 欧美9999 | 超碰99在线 | 免费色av| 国产淫片免费看 | 色99在线 | 成年人国产在线观看 | 久久免费99精品久久久久久 | 在线亚洲免费视频 | 国产日韩在线播放 | av片在线观看 | 在线播放视频一区 | 这里只有精品视频在线 | 91免费观看网站 | 欧美美女一级片 | 亚洲在线a | 国产在线一区观看 | 亚洲午夜av | 婷婷丁香色 | 国产精品入口久久 | www·22com天天操| 国产福利网站 | 亚洲精品免费在线 | 免费看片成人 | 国产在线观看不卡 | 97在线观看免费 | 在线视频欧美精品 | 免费看一级特黄a大片 | 久久色在线观看 | 欧美精品一区二区性色 | 日韩国产精品久久久久久亚洲 | 人人爱人人爽 | 国产日韩欧美在线影视 | 亚洲男男gaygayxxxgv | 国产亚州av | av资源中文字幕 | 中文字幕在线观看你懂的 | 亚洲va韩国va欧美va精四季 | 欧美日韩3p| 激情综合站 | 超级碰99 | 日韩毛片在线一区二区毛片 | 欧美日韩国产在线精品 | 国产小视频在线观看免费 | 久久久电影网站 | 最近高清中文字幕在线国语5 | 亚洲精品午夜aaa久久久 | 中文一区二区三区在线观看 | 91在线观看视频网站 | 中文字幕日本在线观看 | 99热.com| 日韩女同一区二区三区在线观看 | 黄色在线观看污 | www.黄色片.com | 99久久国产免费,99久久国产免费大片 | 日韩av进入 | 国产一区在线观看免费 | 中国精品少妇 | 特级黄色电影 | 中文字幕在线一区二区三区 | 免费网站观看www在线观看 | 欧美视频一区二 | 亚洲视频2 | 日韩激情视频在线观看 | 国色天香在线 | 国产一级性生活 | 349k.cc看片app| 又黄又爽又刺激的视频 | 91视频黄色 | 91中文字幕网 | 久久综合九色欧美综合狠狠 | 午夜精品久久久 | 中文字幕在线观看完整版电影 | 91精品国产福利在线观看 | 国产精品精品国产色婷婷 | 欧美日韩在线观看一区 | 在线成人欧美 | 97电影院在线观看 | 婷婷在线色 | 视频二区在线 | 中文字幕在线观看的网站 | 欧美色图视频一区 | 欧美日韩亚洲在线观看 | 久久成人视屏 | 欧美巨乳网 | 热久久视久久精品18亚洲精品 | 日韩剧| 色婷婷激情综合 | 久久久久久久久久网 | 超碰在线天天 | 欧美日韩一级久久久久久免费看 | 伊人五月综合 | 四虎影视www | 伊香蕉大综综综合久久啪 | 成人av久久| av黄色一级片 | 人人草人人草 | 一区二区影院 | 久草网在线视频 | 久久成人高清 | 麻豆传媒视频观看 | 国产精品成人a免费观看 | 狠狠干中文字幕 | 日韩av专区 | 成人av一区二区在线观看 | 色五月情| 天天干.com | 天天操天天操天天操天天操天天操天天操 | 日韩精品一区二区三区第95 | 超碰在线97国产 | 免费看三级 | 国产高清区 | 97精品国产aⅴ | 国产一级视频免费看 | 91热视频| 综合久久综合久久 | 九九热精品视频在线观看 | 超碰在线最新网址 | 综合激情网 | 久久亚洲影院 | 久久五月天综合 | 9999毛片| 91精品国自产在线偷拍蜜桃 | avhd高清在线谜片 | 超碰在线公开 | 中文字幕日韩免费视频 | 亚洲成av人片在线观看 | 草久在线 | 欧美久久影院 | 日本中文字幕在线播放 | 亚洲高清视频在线观看免费 | 国产精品videoxxxx | 国产一二三四在线视频 | av导航福利 | 欧美日韩在线观看一区二区三区 | 国产精品毛片完整版 | 97电影院网| 久久久久免费网站 | 在线午夜 | 日韩一区二区三区不卡 | 有码一区二区三区 | 亚洲精品99久久久久中文字幕 | 手机成人免费视频 | 91看片麻豆 | 六月激情丁香 | 久久 亚洲视频 | 久久论理 | www.夜夜操.com| av免费电影在线 | 中文字幕一二三区 | av免费电影在线观看 | 亚洲电影av在线 | 伊人超碰在线 | 久草免费福利在线观看 |