一) 概述:oracle在標準sql語言上進行過程性擴充後形成的程式設計語言,是一種oracle特有的,支援應用開發的語言。二) 文法:1.基本結構declare --聲明一些變數、常量、使用者定義的資料類型以及遊標等 --這一部分可選,如不需要可以不寫begin --主程式體exception --異常處理end;/2.字元集1)大小寫字母2)數字3)非顯示的字元、定位字元、空格和斷行符號4)數學符號+,-,*,/,<,>,=。5)間隔符,包括(),{},[],?,!,;,:,",'@,#,%,$,^,&等;3.資料類型1)數字類型NUMBER(P,S),可儲存整數和浮點數;P是有效數字個數,S是小數點右邊數位個數;PLS_INTEGERBINARY_INTEGER後兩種只能儲存整數與number等價的子類型:DEC、DECIMAL、DOUBLE、PRECISION、INTEGER、INT、NUMERIC、REAL、SMALLINT...2)字元類型VARCHAR2:儲存變長字串,VARCHAR2(maxlength)32767位元組,資料庫中該類型最大長度為4000位元組;CHAR:儲存定長字串,CHAR(maxlength) 32767位元組,資料庫中該類型最大長度為2000位元組LONG:儲存變長字串,最大長度為32760位元組,資料庫中該類型最大長度為2GBNCHARNVARCHAR2後兩種類型的長度根據各國字元集的不同而不同;3)日期類型DATA,7位元組,世紀、年、月、天、小時、分鐘和秒;4)布爾類型BOOLEAN5)type定義的資料類型(記錄)TYPE type_name IS RECORD(variable_name datatype[,variable_name datatype[,...);real_name type_name;記錄樣本:emp.eid%TYPEDECLARETYPE myrecord IS RECORD(id varchar2<10>,name varchar2<10>);real_record myrecord;BEGINSELECT eid,ename INTO real_record FROM emp WHERE eid='001';DBMS_OUTPUT.PUT_LINE(real_record.id||','||real_reacord.name);END;DECLARETYPE myrecord IS RECORD(id emp.eid%TYPE ,name varchar2<10>);real_record myrecord;BEGINSELECT eid,ename INTO real_record FROM emp WHERE eid='001';DBMS_OUTPUT.PUT_LINE(real_record.id||','||real_reacord.name);END;DECLAREmyrec emp%ROWTYPEBEGINSELECT * INTO myrec FROM emp WHERE eid='001';DBMS_OUTPUT.PUT_LINE( myrec .eid||','|| myrec .ename);END4.控制結構1)IF語句IF 條件運算式1 THEN 語句序列1;[ELSIF 條件運算式2 THEN 語句序列2;][ELSE 語句序列3;]END IF;2)CASE語句CASE 檢測運算式WHEN 運算式1 THEN 語句序列1......WHEN 運算式n THEN 語句序列n[ELSE 其他語句序列]END;3)NULL值檢查4)迴圈結構LOOP...EXIT...ENDcontrol_var:=0; LOOP IF control_var>5 THEN EXIT; END IF; control_var:=control_var+1;END LOOP;LOOP ... EXIT WHEN ...ENDcontrol_var:=0; LOOP EXIT WHEN control_var>5 control_var:=control_var+1;END LOOP;WHILE...LOOP...ENDcontrol_var:=0;WHILE control_var<=5 LOOP control_var:=control_val+1;END LOOP;FOR...IN...LOOP...ENDFRO control_var in 0...5 LOOP NULL;END LOOP; GOTO lable;... <<mark>>...IF no>98050 THEN GOTO goto_mark;...5.運算式1)字元運算式'hello'||' world'||'!'=hello world!2)布林運算式ANDORNOT