資源描述:
《PLSQL程序設計簡介》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、什么是PL/SQLPL/SQL是ProcedureLanguage&StructuredQueryLanguage的縮寫PL/SQL是對SQL語言存儲過程語言的擴展PL/SQL提高了性能DatabaseDatabaseSQLSQLSQLSQLSQLIF...THENSQLELSESQLENDIF;SQL應用程序應用程序PL/SQL的優(yōu)點有利于客戶/服務器環(huán)境應用的運行PL/SQL是對SQL語言存儲過程語言的擴展PL/SQL是ORACLE系統(tǒng)的核心語言,現(xiàn)在ORACLE的許多部件都是由PL/SQL寫成PL/SQL塊結構和組成元素PL/SQL程序由三個塊組成即聲明部分執(zhí)行部分異常處理部分PL/
2、SQL塊結構和組成元素PL/SQL塊的結構如下:DECLARE/*聲明部分:在此聲明PL/SQL用到的變量,類型及游標,以及局部的存儲過程和函數(shù)*/BEGIN/*執(zhí)行部分:過程及SQL語句,即程序的主要部分*/EXCEPTION/*執(zhí)行異常部分:錯誤處理*/END;其中執(zhí)行部分即begin和end塊是必須的。PL/SQL中的標識符PL/SQL程序設計中的標識符定義與SQL的標識符定義的要求相同標識符名不能超過30字符第一個字符必須為字母不分大小寫不能是SQL保留字PL/SQL中的標識符一般不要把變量名聲明與表中字段名完全一樣,如果這樣可能得到不正確的結果例:DECLAREenamevarc
3、har2(20):=’KING’;BEGINDELETEFROMempWHEREename=ename;END;PL/SQL中的標識符下面是建議使用的變量命名方法標識符命名原則例程序變量v_namev_id程序常量c_constantc_student_name游標變量name_cursoremp_cursor異常標識e_namee_too_many_rows表類型name_table_typeemp_record_type表name_tableemp記錄類型name_typeemp_record參數(shù)p_namep_idPL/SQL中的變量類型類型說明CHAR定長字符串VARCHAR2可變
4、字符串BINARY_INTEGER帶符號整數(shù),為整數(shù)計算優(yōu)化性能NUMBER(p,s)數(shù)值LONG變長字符串DATE日期BOOLEAN布爾ROWID存放數(shù)據(jù)庫行號PL/SQL中聲明變量在語句塊的聲明部分對變量聲明,聲明一個變量的語法是:variable_name[constant]type[notnull][:=value]其中:variable_name為變量名type為類型value為變量的初值PL/SQL中聲明變量例:DECLAREV_DescriptionVARCHAR2(50);V_NumberNUMBER:=45;V_CounterBINARY_INTEGER:=0;V_PIC
5、ONSTANTNUMBERNOTNULL:=3.14;注意:如果變量在聲明時使用了NOTNULL選項則必須為變量指定初值如果變量在聲明時使用了CONSTANT選項則必須為變量指定初值,并且該初值不能被改變。PL/SQL中的復合類型記錄類型:記錄類型是把邏輯相關的數(shù)據(jù)作為一個單元存儲起來定義記錄類型語法如下:TYPErecord_typeISRECORD(Field1type1[NOTNULL][:=exp1],Field2type2[NOTNULL][:=exp2],......Fieldntypen[NOTNULL][:=expn]);PL/SQL中的復合類型%TYPE:定義一個變量,其
6、數(shù)據(jù)類型與已經(jīng)定義的某個數(shù)據(jù)變量的類型相同,或者與數(shù)據(jù)庫表的某個列的數(shù)據(jù)類型相同,這時可以使用%TYPE例:DECLARE--用%TYPE類型定義變量v_enameemp.ename%TYPE;--用%TYPE類型定義與表相配的字段TYPEt_RecordISRECORD(t_noemp.empno%TYPE,t_nameemp.ename%TYPE,t_salemp.sal%TYPE);--聲明接收數(shù)據(jù)的變量v_empt_Record;PL/SQL中的復合類型%ROWTYPE:返回一個記錄類型,其數(shù)據(jù)類型和數(shù)據(jù)庫表的數(shù)據(jù)結構相一致。例:DECLAREv_empnoemp.empno%TY
7、PE:=&no;recemp%ROWTYPE;BEGINSELECT*INTOrecFROMempWHEREempno=v_empno;DBMS_OUTPUT.PUT_LINE('姓名:'
8、
9、rec.ename
10、
11、'工資:'
12、
13、rec.sal
14、
15、'工作時間:'
16、
17、rec.hiredate);END;PL/SQL表類型PL/SQL表,或者稱為索引表(index-table),是可以在PL/SQL程序中引用、能夠模仿數(shù)組的非