oracle pl/sql編程基礎(chǔ)筆記

一、簡介

pl/sql可以一次性發(fā)送多條sql語句到數(shù)據(jù)庫,同時具有變量,流程控制,是結(jié)構(gòu)化與過程化的結(jié)合體。

1.語法結(jié)構(gòu)
declare
--聲明部分:定義變量,常量,游標
begin
--程序編寫,sql語句(執(zhí)行部分)
exception
--處理異常
end;
2.第一個塊
declare
 v_num NUMBER :=10;
 BEGIN 
  DBMS_OUTPUT.PUT_LINE('This string breaks
  here.'||V_NUM);
 END;

注意:默認情況下DBMS_OUTPUT.PUT_LINE無法使用,需要設(shè)置set serveroutput on;

3.定義鍵盤輸入
declare
 v_num NUMBER :=10;
 BEGIN 
 v_num:=&v_num;
  DBMS_OUTPUT.PUT_LINE('This string breaks
  here.'||V_NUM);
 END;
4.查詢數(shù)據(jù)字典所有關(guān)鍵字
select *from v$reserved_words;
5.聲明變量語法
變量名稱[constant] 類型 [not null] [:=value]

注意:pl/sql中變量名不區(qū)分大小寫。

6.使用%type聲明變量(變量與表中某列類型一樣)
DECLARE
    v_eno       emp.empno%TYPE ;    -- 與empno類型相同
    v_ename emp.ename%TYPE ;  -- 與ename類型相同
BEGIN
    DBMS_OUTPUT.put_line('請輸入雇員編號:') ;
    v_eno := &empno ;               -- 由鍵盤輸入雇員編號
    SELECT ename INTO v_ename FROM emp WHERE empno= v_eno ;
    DBMS_OUTPUT.put_line('編號為:' || v_eno || '雇員的名字為:'|| v_ename) ;
END ;
7.%rowtype(標記一行記錄類型)
DECLARE
    emprow  emp%ROWTYPE;
BEGIN
    SELECT * INTO emprow FROM emp WHERE empno= 7369 ;
    DBMS_OUTPUT.put_line('編號為:' || emprow.empno || '雇員的名字為:'|| emprow.ename) ;
END ;

二、運算符

1.賦值運算符(變量:=表達式;)
2.連接運算符(||)
3.關(guān)系運算符(判斷兩個操作數(shù)據(jù)的大小,返回值為true或者false,如果有一個為null,最終結(jié)果也為null)
關(guān)系運算符:>,<,>=,<=,!=,<>
判斷null:is null ,is not null
范圍查詢:between and
范圍查詢:in
模糊查詢:like
4.邏輯運算符(and or not)

三、標量類型

1.數(shù)值型
2.字符型
3.日期型
4.大對象型
5.布爾型

四、程序結(jié)構(gòu)

1.分支結(jié)構(gòu)

如:

if condition then
meet the condition;
end if;
if condition then
meet the condition;
else
not meet the condition
end if ;
if condition then 
meet the condition;
elseif condition then 
meet the condition
...
else 
not meet the condition ;
end if;

注意:condition 可以使用regexp_like()函數(shù)正則驗。也可以使用case when代替if語句。

2.循環(huán)結(jié)構(gòu)
2.1.loop循環(huán)
loop
loop excute block;
exit when loop end condtion;
loop end condition alter;
end loop;
while(condition) loop
loop excute block;
loop end condition alter;
end loop;

例如

DECLARE
    v_i NUMBER := 1 ;   -- 定義一個變量,用于循環(huán)
BEGIN
    LOOP
        DBMS_OUTPUT.put_line('v_i = ' || v_i) ;
        EXIT WHEN v_i >= 3 ;
        v_i := v_i + 1 ;
    END LOOP ;
END ;
2.2.for循環(huán)
for loop_index in[reverse] start...end Loop
loop block;
end loop;

例如:

    v_i NUMBER := 1 ;   -- 定義一個變量,用于循環(huán)
BEGIN
    FOR v_i IN 1 .. 3 LOOP
        DBMS_OUTPUT.put_line('v_i = ' || v_i) ;
    END LOOP ;
END ;

降序:

DECLARE
    v_i NUMBER := 1 ;   -- 定義一個變量,用于循環(huán)
BEGIN
    FOR v_i IN REVERSE 1 .. 3 LOOP
        DBMS_OUTPUT.put_line('v_i = ' || v_i) ;
    END LOOP ;
END ;

注意:循環(huán)控制exit(退出循環(huán)),continue(退出本次循環(huán))
五.內(nèi)部程序塊
六.異常處理

未完待續(xù)。。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容