oracle 9i从入门到精通读书笔记2
2.1 PL/SQL程序結構?
2.1.1 PL/SQL塊的類型?
所有的PL/SQL程序都是以塊作為基本單位,以及都是由塊組成的。?
這些塊可以是按順序出現的,也可以是嵌套的?
塊可以根據其帶名稱和不帶名稱以及在數據庫中的存儲方式分為以下類型:?
匿名塊:只能執行一次,不能存儲在數據庫中?
帶名塊:一種帶標簽的匿名塊?
子程序:可以存儲在數據庫中的過程,函數和包,可以多次執行,可以在外部的程序中顯示調用?
觸發器:存儲在數據庫中的帶名塊,當相應的觸發事件發生時觸發器就被自動執行,觸發器事件一般是針對特定的數據庫表進行的DML語句,如INSERT,UPDATE,DELTE?
<<I_Namedblock>>?
DECLARE?
v_num1 NUMBER := 1;?
v_num2 NUMBER := 2;?
v_str1 VARCHAR2 (30) := '你好!';?
v_str2 VARCHAR2 (30) := '這是你第一次接觸PL/SQL';?
v_outputstr VARCHAR2 (30);?
BEGIN?
INSERT INTO test_table(ncolumn, vcolumn)VALUES (v_num1, v_str1);?
INSERT INTO test_table(ncolumn, vcolumn)VALUES (v_num2, v_str2);?
SELECT vcolumn INTO v_outputstr FROM test_table WHERE ncolumn = v_num1;?
DBMS_OUTPUT.put_line (v_outputstr);?
SELECT vcolumn INTO v_outputstr FROM test_table WHERE ncolumn = v_num2;?
DBMS_OUTPUT.put_line (v_outputstr);?
END I_Namedblock;?
帶名塊就是在匿名塊前面加上一個標簽?
把DECLARE關鍵字 變成 CREATE OR REPLACE PROCEDURE 就變成了存儲過程?
CREATE OR REPLACE PROCEDURE 過程名 IS?
2.1.2 PL/SQL塊的結構?
所有塊都包含3個部分:聲明部分,執行部分,異常處理部分?
DECLARE?
v_ncolumn NUMBER :=6;?
v_vcolumn VARCHAR2(30);?
BEGIN?
SELECT v_column INTO v_vcolumn FROM test_table WHERE ncolumn=v_ncolumn;?
EXCEPTION?
WHEN NO_DATA_FOUND THEN?
DBMS_OUTPUT.PUT_LINE('沒有找到匹配的數據');?
END;?
在過程和函數中聲明變量是不需要DECLARE的,但在聲明TRIGGER中的變量是必須要有DECLARE?
如果塊中不需要聲明變量,類型和游標時,聲明部分可以省略?
執行部分是不可缺少的,一般以BEGIN開始 END結束。END關鍵字必須是分號結束的?
2.1.3 詞法單位?
e代表乘以10的多少次冪?
2.2 變量聲明?
Variable_name [CONSTANT] type [NOT NULL][:=value | DEAFULT value]?
Variable_name是變量名?
CONSTANT 聲明的是一個常量?
Type 是類型?
NOT NULL 可選,表示不能為空?
:=value | DEAFULT value表示賦值?
缺省的變量會被初始化為NULL?
不能把NULL付給一個定義為NOT NULL的變量acct_id INTEGER(5) NOT NULL;這樣是不允許的?
在NATURAL和POSITIVEN,他們被預先定義為NOT NULL?
每行只能聲明一個變量,這和其他語言不同?
BEGIN END;是可以嵌套的?
2.3 變量類型?
4中標量類型(數字類型,布爾型,字符型,日期型)?
復合型?
引用型?
LOB型?
數字型的三種基本類型:BINARY_INTEGER,NUMBER,PLS_INTEGER?
字符型:CHAR,VARCHAR2,LONG和LONG RAW,RAW,ROWID和UROWID?
LOB類型:BFILE,BLOB,CLOB,NCLOB?
布爾類型:BOOLEAN(TRUE,FALSE,NULL)?
日期時間類型:DATE,TIMESTAMP,TIMESTAMP WITH TIME ZONE,TIMESTAMP WITH LOCAL TIME ZONE,INTERVAL YEAR TO MONTH,INTERVAL DAY TO SENCOND?
復合類型:記錄,表,數組?
引用類型:REF CURSOR 和ref object_type?
用戶自定義類型?
2.4 數據類型轉換?
顯式轉換,可以使用內置函數?
隱式轉換,隱式轉換不是好的習慣,可能會影響效率,結果可能不可預料?
2.5 表達式?
表達式是由操作符和運算符的結合?
CASE 表達式?
CASE SELECTOR?
WHEN express THEN result1?
WHEN express THEN result3?
WHEN express THEN result2?
END;
轉載于:https://www.cnblogs.com/myfreefield/archive/2011/04/03/2004392.html
總結
以上是生活随笔為你收集整理的oracle 9i从入门到精通读书笔记2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: opendds协议服务器,OpenDDS
- 下一篇: windows mac 安装lua