国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

PL/SQL基本語法要素

2024-07-21 02:40:37
字體:
供稿:網(wǎng)友
常量

    1. 定義常量的語法格式
    常量名 constant 類型標(biāo)識符 [not null]:=值;
    常量,包括后面的變量名都必須以字母開頭,不能有空格,不能超過30個字符長度,同時不能和保留字同名,常(變)量名稱不區(qū)分大小寫,在字母后面可以帶數(shù)字或非凡字符。括號內(nèi)的not null為可選參數(shù),若選用,表明該常(變)量不能為空值。
    2. 實(shí)例
    在【SQLPlus Worksheet】中執(zhí)行下列PL/SQL程序,該程序定義了名為pi的數(shù)字型常量,長度為9。
    執(zhí)行結(jié)果如圖9.6所示。
    ―――――――――――――――――――――――――――――――――――――
    declare
        pi constant number(9):=3.1415926;
    begin
        commit;
    end;
    ―――――――――――――――――――――――――――――――――――――
    【配套程序位置】:第9章/constantdefine.sql。
PL/SQL基本語法要素
基本數(shù)據(jù)類型變量

    1. 基本數(shù)據(jù)類型
    PL/SQL中常用的基本數(shù)據(jù)類型如表9.2所示。
表9.2 常見的數(shù)據(jù)基本類型類型標(biāo)識符說明Number數(shù)字型Int整數(shù)型Pls_integer整數(shù)型,產(chǎn)生溢出時出現(xiàn)錯誤Binary_integer整數(shù)型,表示帶符號的整數(shù)Char定長字符型,最大255個字符Varchar2變長字符型,最大2000個字符Long變長字符型,最長2GBDate日期型Boolean布爾型(TRUE、FALSE、NULL三者取一)    在PL/SQL中使用的數(shù)據(jù)類型和Oracle數(shù)據(jù)庫中使用的數(shù)據(jù)類型,有的含義是完全一致的,有的是有不同的含義的。
    2. 基本數(shù)據(jù)類型變量的定義方法
    變量名 類型標(biāo)識符 [not null]:=值;
    3. 實(shí)例
    在【SQLPlus Worksheet】中執(zhí)行下列PL/SQL程序,該程序定義了名為age的數(shù)字型變量,長度為3,初始值為26。執(zhí)行結(jié)果如圖9.7所示。
PL/SQL基本語法要素
    ―――――――――――――――――――――――――――――――――――――
    declare
        age number(3):=26;
    begin
        commit;
    end;
    ―――――――――――――――――――――――――――――――――――――
    【配套程序位置】:第9章/basicdatatypedefine.sql。

復(fù)合數(shù)據(jù)類型變量

    下面介紹常見的幾種復(fù)合數(shù)據(jù)類型變量的定義。
    1. 使用%type定義變量
    為了讓PL/SQL中變量的類型和數(shù)據(jù)表中的字段的數(shù)據(jù)類型一致,Oracle 9i提供了%type定義方法。這樣當(dāng)數(shù)據(jù)表的字段類型修改后,PL/SQL程序中相應(yīng)變量的類型也自動修改。
    在【SQLPlus Worksheet】中執(zhí)行下列PL/SQL程序,該程序定義了名為mydate的變量,其類型和tempuser.testtable數(shù)據(jù)表中的currentdate字段類型是一致的。
    執(zhí)行結(jié)果如圖9.8所示。
    ―――――――――――――――――――――――――――――――――――――
    Declare
        mydate tempuser.testtable.currentdate%type;
    begin
        commit;
    end;
    ―――――――――――――――――――――――――――――――――――――
    【配套程序位置】:第9章/typedefine.sql。

PL/SQL基本語法要素
    2. 定義記錄類型變量
    很多結(jié)構(gòu)化程序設(shè)計語言都提供了記錄類型的數(shù)據(jù)類型,在PL/SQL中,也支持將多個基本數(shù)據(jù)類型捆綁在一起的記錄數(shù)據(jù)類型。
    下面的程序代碼定義了名為myrecord的記錄類型,該記錄類型由整數(shù)型的myrecordnumber和日期型的mycurrentdate基本類型變量組成,srecord是該類型的變量,引用記錄型變量的方法是“記錄變量名.基本類型變量名”。
    程序的執(zhí)行部分從tempuser.testtable數(shù)據(jù)表中提取recordnumber字段為68的記錄的內(nèi)容,存放在srecord復(fù)合變量里,然后輸出srecord.mycurrentdate的值,實(shí)際上就是數(shù)據(jù)表中相應(yīng)記錄的currentdate的值。
    在【SQLPlus Worksheet】中執(zhí)行下列PL/SQL程序,執(zhí)行結(jié)果如圖9.9所示。
    ―――――――――――――――――――――――――――――――――――――
    set serveroutput on
    declare
        type myrecord is record(
           myrecordnumber int,
           mycurrentdate date);
        srecord myrecord;
    begin
        select * into srecord from tempuser.testtable where recordnumber=68;
        dbms_output.put_line(srecord.mycurrentdate);
    end;
    ―――――――――――――――――――――――――――――――――――――
    【配套程序位置】:第9章/ recordtypedefine.sql。
    在PL/SQL程序中,select語句總是和into配合使用,into子句后面就是要被賦值的變量。
PL/SQL基本語法要素
    3. 使用%rowtype定義變量
    使用%type可以使變量獲得字段的數(shù)據(jù)類型,使用%rowtype可以使變量獲得整個記錄的數(shù)據(jù)類型。比較兩者定義的不同:變量名 數(shù)據(jù)表.列名%type,變量名 數(shù)據(jù)表%rowtype。
    在【SQLPlus Worksheet】中執(zhí)行下列PL/SQL程序,該程序定義了名為mytable的復(fù)合類型變量,與testtable數(shù)據(jù)表結(jié)構(gòu)相同,執(zhí)行結(jié)果如圖9.10所示。
    ―――――――――――――――――――――――――――――――――――――
    Declare
        mytable testtable%rowtype;
    begin
       select * into mytable
       from tempuser.testtable
       where recordnumber=88;
       dbms_output.put_line(mytable.currentdate);
    end;
    ―――――――――――――――――――――――――――――――――――――
PL/SQL基本語法要素
    【配套程序位置】:第9章/ rowtypedefine.sql。
    4. 定義一維表類型變量
    表類型變量和數(shù)據(jù)表是有區(qū)別的,定義表類型變量的語法如下:
    ―――――――――――――――――――――――――――――――――――――
    type 表類型 is table of 類型 index by binary_integer;
    表變量名 表類型;
    ―――――――――――――――――――――――――――――――――――――
    類型可以是前面的類型定義,index by binary_integer子句代表以符號整數(shù)為索引,這樣訪問表類型變量中的數(shù)據(jù)方法就是“表變量名(索引符號整數(shù))”。

    在【SQLPlus Worksheet】中執(zhí)行下列PL/SQL程序,該程序定義了名為tabletype1和tabletype2的兩個一維表類型,相當(dāng)于一維數(shù)組。table1和table2分別是兩種表類型變量。
    執(zhí)行結(jié)果如圖9.11所示。
    ―――――――――――――――――――――――――――――――――――――
    Declare
       type tabletype1 is table of varchar2(4) index by binary_integer;
       type tabletype2 is table of tempuser.testtable.recordnumber%type index by binary_integer;
    table1 tabletype1;
    table2 tabletype2;
    begin
       table1(1):='大學(xué)';
       table1(2):='大專';
       table2(1):=88;
       table2(2):=55;
       dbms_output.put_line(table1(1)table2(1));
       dbms_output.put_line(table1(2)table2(2));
    end;
    ―――――――――――――――――――――――――――――――――――――
    【配套程序位置】:第9章/ tabletypedefine1.sql。
PL/SQL基本語法要素
    “”是連接字符串的運(yùn)算符。
    5. 定義多維表類型變量
    在【SQLPlus Worksheet】中執(zhí)行下列PL/SQL程序,該程序定義了名為tabletype1的多維表類型,相當(dāng)于多維數(shù)組,table1是多維表類型變量,將數(shù)據(jù)表tempuser.testtable中recordnumber為60的記錄提取出來存放在table1中并顯示。執(zhí)行結(jié)果如圖9.12所示。
    ―――――――――――――――――――――――――――――――――――――
    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).recordnumbertable1(60).currentdate);
    end;
    ―――――――――――――――――――――――――――――――――――――
    【配套程序位置】:第9章/ tabletypedefine2.sql。
PL/SQL基本語法要素
    在定義好的表類型變量里,可以使用count、delete、first、last、next、exists和PRior等屬性進(jìn)行操作,使用方法為“表變量名.屬性”,返回的是數(shù)字。
    在【SQLPlus Worksheet】中執(zhí)行下列PL/SQL程序,該程序定義了名為tabletype1的一維表類型,table1是一維表類型變量,變量中插入3個數(shù)據(jù),綜合使用了表變量屬性。
    執(zhí)行結(jié)果如圖9.13所示。
    ―――――――――――――――――――――――――――――――――――――
    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('總記錄數(shù):'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;
    ―――――――――――――――――――――――――――――――――――――
    【配套程序位置】:第9章/ tabletypedefine3.sql。

PL/SQL基本語法要素

表達(dá)式

    變量、常量經(jīng)常需要組成各種表達(dá)式來進(jìn)行運(yùn)算,下面介紹在PL/SQL中常見表達(dá)式的運(yùn)算規(guī)則。
    1. 數(shù)值表達(dá)式
    PL/SQL程序中的數(shù)值表達(dá)式是由數(shù)值型常數(shù)、變量、函數(shù)和算術(shù)運(yùn)算符組成的,可以使用的算術(shù)運(yùn)算符包括+(加法)、-(減法)、*(乘法)、/(除法)和**(乘方)等。
    在【SQLPlus Worksheet】中執(zhí)行下列PL/SQL程序,該程序定義了名為result的整數(shù)型變量,計算的是10+3*4-20+5**2的值,理論結(jié)果應(yīng)該是27。執(zhí)行結(jié)果如圖9.14所示。
    ―――――――――――――――――――――――――――――――――――――
    set serveroutput on
    Declare
       result integer;
    begin
       result:=10+3*4-20+5**2;
       dbms_output.put_line('運(yùn)算結(jié)果是:'to_char(result));
    end;
    ―――――――――――――――――――――――――――――――――――――
    【配套程序位置】:第9章/ datacompute.sql。
PL/SQL基本語法要素
    dbms_output.put_line函數(shù)輸出只能是字符串,因此利用to_char函數(shù)將數(shù)值型結(jié)果轉(zhuǎn)換為字符型。
    2. 字符表達(dá)式
    字符表達(dá)式由字符型常數(shù)、變量、函數(shù)和字符運(yùn)算符組成,唯一可以使用的字符運(yùn)算符就是連接運(yùn)算符“”。
    3. 關(guān)系表達(dá)式
    關(guān)系表達(dá)式由字符表達(dá)式或數(shù)值表達(dá)式與關(guān)系運(yùn)算符組成,可以使用的關(guān)系運(yùn)算符包括以下9種。
    < 小于
    > 大于
    = 等于(不是賦值運(yùn)算符:=)
    like 類似于
    in 在……之中
    <= 小于等于
    >= 大于等于
    != 不等于
    between 在……之間
    關(guān)系型表達(dá)式運(yùn)算符兩邊的表達(dá)式的數(shù)據(jù)類型必須一致。
    4. 邏輯表達(dá)式
    邏輯表達(dá)式由邏輯常數(shù)、變量、函數(shù)和邏輯運(yùn)算符組成,常見的邏輯運(yùn)算符包括以下3種。
    NOT:邏輯非
    OR:邏輯或
    AND:邏輯與
    運(yùn)算的優(yōu)先次序?yàn)镹OT、AND和OR。

函數(shù)

    PL/SQL程序中提供了很多函數(shù)供擴(kuò)展功能,除了標(biāo)準(zhǔn)SQL語言的函數(shù)可以使用外,最常見的數(shù)據(jù)類型轉(zhuǎn)換函數(shù)有以下3個。
    To_char:將其他類型數(shù)據(jù)轉(zhuǎn)換為字符型。
    To_date:將其他類型數(shù)據(jù)轉(zhuǎn)換為日期型。
    To_number:將其他類型數(shù)據(jù)轉(zhuǎn)換為數(shù)值型。
    以上介紹了PL/SQL中最基本的語法要素,下面介紹體現(xiàn)PL/SQL過程化編程思想的流程控制語句。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 马龙县| 淮南市| 连山| 新兴县| 盖州市| 峡江县| 德江县| 黑水县| 涟水县| 太湖县| 东至县| 博兴县| 瑞安市| 舟山市| 西乌| 达孜县| 仙游县| 阿克苏市| 阿勒泰市| 巴东县| 定兴县| 靖边县| 上饶市| 邓州市| 荃湾区| 本溪市| 诸城市| 赣州市| 临江市| 葫芦岛市| 垫江县| 修武县| 临安市| 黎城县| 龙里县| 辛集市| 容城县| 娱乐| 喀喇沁旗| 荥经县| 蒙阴县|