Oracle中PL/SQL的塊與表達(dá)式
一、塊(Block)
是PL/SQL的基本執(zhí)行單元,由定義部分,執(zhí)行部分(必須)和例外處理部分組成。
Declare /*定義部分――定義常量、變量、游標(biāo)、例外、復(fù)雜數(shù)據(jù)類型*/ Begin /*執(zhí)行部分――要執(zhí)行的pl/sql語(yǔ)句和sql語(yǔ)句*/ Exception /*例外處理部分――處理運(yùn)行的各種錯(cuò)誤*/ end;
例:
declare v_ename varchar2(5); v_sal number(7,2); begin select ename,sal into v_ename,v_sal from emp where empno = &no; dbms_output.put_line('雇員名:'||v_ename||' 薪水: '||v_sal); exception when no_data_found then dbms_output.put_line('您輸入的編號(hào)有誤!'); end;
二、PL/SQL詞匯單元
PL/SQL詞匯單元是它的最小的組件:分隔符、標(biāo)識(shí)符、字面量、注釋。
1、分隔符
分隔符是一個(gè)字符或字符的組合,在PL/SQL中有特殊的意義。不要在分隔符中嵌入其它的字符。
簡(jiǎn)單分隔符只有一個(gè)字符。
- +, -, *, / :加法,減法/否定,乘法,除法
- %:屬性索引
- ‘:字符串分隔符
- .:組件選擇
- (,):表達(dá)式或列表分隔符
- ::主機(jī)變量指示符
- ,:項(xiàng)目分離符
- “:帶引號(hào)的標(biāo)識(shí)符分隔符
- =:關(guān)系運(yùn)算符
- @:遠(yuǎn)程訪問(wèn)指示符
- ;:聲明終止符
復(fù)合分割符由兩個(gè)字符組成。
- :=:賦值運(yùn)算符
- =>:操作符關(guān)聯(lián)
- **:乘方運(yùn)算符
- <<, >>:標(biāo)簽分隔符(開(kāi)始和結(jié)束)
- /, /:多行注釋分隔符(開(kāi)始和結(jié)束)
- –:?jiǎn)涡凶⑨屩甘痉?/li>
- ..:范圍操作
- <, >, <=, >=:關(guān)系運(yùn)算符
- <>, ‘=, ~=, ^=:不同版本的不相等的
2、標(biāo)識(shí)符
- 標(biāo)識(shí)符命名pl/sql元素,包括:常量、光標(biāo)、異常、關(guān)鍵字、標(biāo)簽、包、保留字、子程序、類型、變量。
- 標(biāo)識(shí)符是由一個(gè)字母后面可以跟更多的字母,數(shù)字,美元符號(hào),下劃線和數(shù)字符號(hào),并且不得超過(guò)30個(gè)字符。而像連字符(-)、斜線(/)等符號(hào)都是不允許使用的。
- 除了字符串和字符以外,PL/SQL對(duì)大小寫(xiě)是不敏感的。
- 不能使用保留關(guān)鍵字作為標(biāo)識(shí)符。
3、文本
整數(shù):030, 6, -14, 0, +327672E5, 5 * 10**3
字符:'Z' , '%' , '7' , ' ' , 'Hello, world!'
布爾: TRUE、FALSE和 null
日期: DATE '1998-12-25' ; TIMESTAMP '1997-10-22 13:01:01' ;
4、注釋
單選注釋
Select * from emp where empno=7788;--取得員工信息
多行注釋
/*……*/來(lái)劃分
三、PL/SQL代碼編寫(xiě)規(guī)則
- 當(dāng)定義變量時(shí),建議用v_作為前綴;常量用c_作為前綴 ;游標(biāo)用_cur作為后綴;當(dāng)定義例外用e_作為前綴。
- PL/sql塊中的語(yǔ)句不區(qū)分大小寫(xiě)
- PL/SQL中可以使用大多數(shù)的單行SQL函數(shù):round,upper,to_char,month_between .
到此這篇關(guān)于Oracle中PL/SQL塊與表達(dá)式的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
oracle數(shù)據(jù)庫(kù)鎖表的原因及解決方法
出現(xiàn)鎖表的情況很多種,但是大部分情況都是更新表,然后并沒(méi)有提交,導(dǎo)致數(shù)據(jù)庫(kù)的表被鎖的情況,處理方式也比較簡(jiǎn)單,本文小編給大家介紹了oracle數(shù)據(jù)庫(kù)鎖表的原因及解決方法,需要的朋友可以參考下2023-11-11Oracle undo_management參數(shù)不一致錯(cuò)誤
因RAC的undo_management參數(shù)不一致導(dǎo)致Oracle數(shù)據(jù)庫(kù)mount報(bào)ORA-01105 ORA-01606錯(cuò)誤,本文就這個(gè)問(wèn)題2013-11-11Oracle中多表關(guān)聯(lián)批量插入批量更新與批量刪除操作
這篇文章主要介紹了Oracle中多表關(guān)聯(lián)批量插入,批量更新與批量刪除操作,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12Oracle 監(jiān)聽(tīng)器密碼設(shè)置方法(LISTENER)
在缺省的情況下,任意用戶不需要使用任何密碼即通過(guò)lsnrctl 工具對(duì)Oracle Listener進(jìn)行操作或關(guān)閉,從而造成任意新的會(huì)話都將無(wú)法建立連接2016-09-09oracle 多個(gè)字符替換實(shí)現(xiàn)
CSDN上的一個(gè)網(wǎng)友,需要一個(gè)sql語(yǔ)句的解決方案需求是這樣的求寫(xiě)oracle多個(gè)字符替換(有測(cè)試數(shù)據(jù))2009-10-10ORACLE DATAGUARD中手工處理日志v$archive_GAP的方法
從9i以后,oracle dataguard 備庫(kù)一般都不需要手工處理丟失的日志,F(xiàn)AL自動(dòng)會(huì)幫我們處理,本文主要通過(guò)個(gè)案例來(lái)講下手工處理丟失的日志的方法。2014-08-08在Oracle表中進(jìn)行關(guān)鍵詞搜索的過(guò)程
這篇文章主要介紹了在Oracle表中進(jìn)行關(guān)鍵詞搜索的過(guò)程,我們可以通過(guò)Oracle?SQL?Developer或Toad運(yùn)行PL/SQL塊,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06實(shí)現(xiàn)oracle數(shù)據(jù)庫(kù)字段自增長(zhǎng)(兩種方式)
這篇文章主要通過(guò)兩種方式實(shí)現(xiàn)oracle數(shù)據(jù)庫(kù)字段自增長(zhǎng),第一種方式是序列+觸發(fā)器,第二種方式序列+顯示調(diào)用序列,需要的朋友可以參考下2015-07-07