锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品国产自在久久 ,亚洲AV无码专区国产乱码电影 ,一本色道久久88亚洲综合http://www.tkk7.com/hitlang/category/11588.html瀛︿互鑷寸敤zh-cnFri, 02 Mar 2007 06:39:30 GMTFri, 02 Mar 2007 06:39:30 GMT60PL/SQLhttp://www.tkk7.com/hitlang/articles/71856.htmlliulangliulangMon, 25 Sep 2006 15:18:00 GMThttp://www.tkk7.com/hitlang/articles/71856.htmlhttp://www.tkk7.com/hitlang/comments/71856.htmlhttp://www.tkk7.com/hitlang/articles/71856.html#Feedback0http://www.tkk7.com/hitlang/comments/commentRss/71856.htmlhttp://www.tkk7.com/hitlang/services/trackbacks/71856.html
聽聽聽聽聽聽
聽PL/SQL鏁版嵁搴撶紪紼?br />聽聽聽聽淇濆瘑聽聽聽聽聽聽
聽聽聽聽
3. 絎竴绔?br />聽聽 1.PL/SQL綆浠?br />聽聽 2. PL/SQL紼嬪簭緇撴瀯
聽聽 3. 鍙橀噺涓庢暟鎹被鍨嬄犅犅犅?br />聽聽 4. PL/SQL鎺у埗璇彞
聽聽 5. PL/SQL娓告爣
聽聽 6. 寮傚父鎹曡幏
聽聽 7. 瀛愮▼搴?br />聽聽 聽聽1. 榪囩▼
聽聽 聽聽2. 鍑芥暟
聽聽 8. 鍖?br />聽聽 9. 瑙﹀彂鍣?br />聽聽
4. Oracle鈻插簲鐢ㄧ紪紼嬫柟娉曟瑙?br />聽 Pro*C/C++
聽 PL/SQL
聽 ODBC
聽 OCI
聽 SQLJ
聽 JDBC
聽 XSQL鈻?br />聽聽 娉細鈻?鐢查鏂囧叕鍙革紝涓栫晫絎簩澶ц蔣浠跺叕鍙革紝涓昏惀鏁版嵁搴撲駭鍝侊紝騫舵彁渚涘熀浜庢暟鎹簱鐨勫叏闈㈢殑浼佷笟綰у簲鐢ㄦ柟妗堛?br />聽聽聽聽聽聽 鈻?eXtension Structure Query Language鎵╁睍緇撴瀯鍖栨煡璇㈣璦錛屽姞寮虹殑SQL瀛愰泦錛孫racle鍏徃鐨勬柊鎶鏈?/p>

5. PL/SQL
聽聽 PL/SQL(Procedural Language/SQL)鏄湪鏍囧噯SQL鐨勫熀紜涓婂鍔犱簡榪囩▼鍖栧鐞嗙殑璇█
聽聽 Oracle瀹㈡埛绔伐鍏瘋闂甇racle鏈嶅姟鍣ㄧ殑鎿嶄綔璇█
聽聽 Oracle瀵筍QL鐨勬墿鍏?br />聽聽 BEGIN
聽聽 聽聽IF TO_CHAR(SYSDATE, 'DAY')='Monday' THEN
聽聽 聽聽聽聽pay_for_hamburgers;
聽聽聽ELSE
聽聽聽聽聽borrow_hamburger_money;
聽聽聽END IF;
聽 END;聽聽
聽 聽聽
6. PL/SQL
聽 緇撴瀯鍖栨ā鍧楀寲緙栫▼
聽 鑹ソ鐨勫彲縐繪鎬?br />聽 鑹ソ鐨勫彲緇存姢鎬?br />聽 鎻愬崌緋葷粺鎬ц兘
聽 涓嶄究浜庡悜寮傛瀯鏁版嵁搴撶Щ妞嶅簲鐢ㄧ▼搴?br />聽
7. SQL聽聽聽聽聽 聽聽
聽 絎洓浠h璦
聽 鍋氫粈涔堬紝涓嶇鎬庝箞鍋?br />聽 緙哄皯榪囩▼涓庢帶鍒惰鍙?br />聽 鏃犵畻娉曟弿榪拌兘鍔?br />聽
8. PL/SQL
聽聽 Procedural Language/SQL
聽聽 鎵╁睍
聽聽 聽聽-鍙橀噺鍜岀被鍨?br />聽聽 聽聽-鎺у埗緇撴瀯
聽聽 聽聽-榪囩▼涓庡嚱鏁?br />聽聽 聽聽-瀵硅薄綾誨瀷涓庢柟娉?br />聽聽 BEGIN
聽聽 聽聽IF TO_CHAR(SYSDATE, 'DAY')='Monday' THEN
聽聽 聽聽聽聽pay_for_hamburgers;
聽聽聽ELSE
聽聽聽聽聽borrow_hamburger_money;
聽聽聽END IF;
聽 END;聽聽

9. 絎簩绔?br />聽聽 1.PL/SQL綆浠?br />聽聽 2. PL/SQL紼嬪簭緇撴瀯
聽聽 3. 鍙橀噺涓庢暟鎹被鍨嬄犅犅犅?br />聽聽 4. PL/SQL鎺у埗璇彞
聽聽 5. PL/SQL娓告爣
聽聽 6. 寮傚父鎹曡幏
聽聽 7. 瀛愮▼搴?br />聽聽 聽聽1. 榪囩▼
聽聽 聽聽2. 鍑芥暟
聽聽 8. 鍖?br />聽聽 9. 瑙﹀彂鍣?聽 聽聽

10. PL/SQL紼嬪簭緇撴瀯
聽聽聽 PL/SQL鍧?br />聽-鐢蟲槑閮ㄥ垎錛?DECLARE
聽-鎵ц閮ㄥ垎錛?BEGIN
聽-寮傚父澶勭悊錛?EXCEPTION
聽聽聽 DECLARE
聽v_StudentID NUMBER(5):=1000;
聽v_FirstName VARCHAR(20);
聽聽聽 BEGIN
聽SELECT first_name
聽聽INTO v_FirstName
聽FROM students
聽WHERE id=v_StudentID;
聽聽聽 EXCEPTION
聽WHEN NO_DATA_FOUND THEN
聽聽INSERT INTO log_table(info)
聽聽VALUES('Student 1000 does not exist!');
聽聽聽 END;

11. PL/SQL寮鍙戠幆澧?br />聽聽聽 SqlPlus鈻插伐鍏?br />聽聽聽 GUI寮鍙戝伐鍏?br />聽-SQL娓歌瀹?br />聽-SQL紼嬪簭鍛?br />聽鈥︹?br />聽鐩稿叧淇℃伅
http://www.oracle.com
http://gwynne.cs.ualberta.ca/~oracle/817doc/index.htm
聽聽聽 娉細鈻?Oracle鍏徃鐨凷QL宸ュ叿錛屼篃鍙互鐢ㄥ畠鏉ユ搷浣淥racle鏁版嵁搴撱?/p>

12. PL/SQL瀛楃闆?br />聽聽聽 瀛楁瘝錛欰-Z, a-z
聽聽聽 鏁板瓧錛?-9
聽聽聽 絀虹櫧錛歍ab,絀烘牸錛屽洖杞?br />聽聽聽 絎﹀彿錛?-*/<>=();:'@"%||&--/**/
聽聽聽 PL/SQL瀵瑰ぇ灝忓啓涓嶆晱鎰?/p>

13. 鏍囪瘑絎?br />聽聽聽 鐢ㄦ潵緇欏璞″懡鍚?br />聽-鍙橀噺銆佹父鏍囥佺被鍨嬨佸瓙紼嬪簭
聽聽聽 鍛藉悕瑙勫垯
聽-瀛楁瘝寮澶?br />聽-鍚庤窡浠繪剰鐨勯潪絀烘牸瀛楃銆佹暟瀛椼佽揣甯佺鍙楓佷笅鍒掔嚎鎴?
聽-鏈澶ч暱搴︿負30涓瓧絎?br />聽聽聽 鏍囪瘑絎︾殑渚嬪瓙
聽聽聽 x, First Name, v_StudentID, x+y, TempVar, _tmp_, v1, v2_,
聽聽聽 1_var, s#, v$3, This_is_a_really_long_identifier

14. 鍙橀噺澹版槑
聽聽聽 璇硶
聽聽聽 鍙橀噺鍚?綾誨瀷 [甯告暟] [闈炵┖] [:=鍊糫;
聽聽聽 渚嬪瓙
聽聽聽 DECLARE
聽v_Desc VARCHAR2(50);
聽v_Num NUMBER:=45;
聽v_Count BINARY_INTEGER:=0;
聽聽聽 PL/SQL瑙勫畾娌℃湁鍒濆鍖栫殑鍙橀噺涓篘ULL
聽-NULL錛氭湭瀹氫箟

15. 絎笁绔?br />聽聽 1.PL/SQL綆浠?br />聽聽 2. PL/SQL紼嬪簭緇撴瀯
聽聽 3. 鍙橀噺涓庢暟鎹被鍨嬄犅犅犅?br />聽聽 4. PL/SQL鎺у埗璇彞
聽聽 5. PL/SQL娓告爣
聽聽 6. 寮傚父鎹曡幏
聽聽 7. 瀛愮▼搴?br />聽聽 聽聽1. 榪囩▼
聽聽 聽聽2. 鍑芥暟
聽聽 8. 鍖?br />聽聽 9. 瑙﹀彂鍣?

16. 鏁版嵁綾誨瀷
聽聽聽 鏍囬噺鍨?br />聽-鏁板瓧鍨嬨佸瓧絎﹀瀷銆佸竷灝斿瀷銆佹棩鏈熷瀷
聽聽聽 緇勫悎鍨?br />聽-RECORD, TABLE, VARRAY
聽聽聽 鍙傝冨瀷
聽-REF CURSOR, REF object_type
聽聽聽 LOB(澶у璞?
聽-BFILE 鏄簩榪涘埗錛屽瓨鍌ㄥ湪鏁版嵁搴撳闈㈢殑
聽-BLOB 鏄簩榪涘埗
聽-CLOB 鏄崟瀛楄妭瀛楃鏁版嵁
聽-NCLOB 鏄瀛楄妭瀛楃鏁版嵁

17. 鏍囬噺綾誨瀷
聽聽聽 鏁板瓧綾誨瀷
聽-BINARY_INTEGER, DEC, FLOAT, REAL...
聽-NUMBER
聽-NUMBER(3)
聽-NUMBER(4,3)
聽-How about NUMBER(4,6)
聽聽聽 瀛楃鍨?br />聽-CHAR, VARCHAR, VARCHAR2, STRING...
聽-LONG
聽聽聽 甯冨皵鍨?BOOLEAN)
聽聽聽 鏃ユ湡鍨?DATE)

18. %TYPE
聽聽聽 鍙橀噺鍏鋒湁涓庢暟鎹簱鐨勮〃涓煇涓瀛楁鐩稿悓鐨勭被鍨?br />聽聽聽 DECLARE
聽v_FirstName VARCHAR2(20);
聽聽聽 DECLARE
聽v_FirstName students.first_name%TYPE;

19. 璁板綍綾誨瀷
聽聽聽 TYPE 璁板綍鍚?IS RECORD(
聽鍩? 綾誨瀷1 [闈炵┖] [:=琛ㄨ揪寮?]
聽鍩? 綾誨瀷2 [闈炵┖] [:=琛ㄨ揪寮?]
聽...
聽鍩焠 綾誨瀷n [闈炵┖] [:=琛ㄨ揪寮弉]
聽聽聽 濡傛灉涓涓瓧孌甸檺瀹歂OT NULL錛岄偅涔堝畠蹇呴』鎷ユ湁涓涓垵濮嬪?br />聽聽聽 鎵鏈夋病鏈夊垵濮嬪寲鐨勫瓧孌甸兘浼氬垵濮嬪寲涓篘ULL

20. RECORD綾誨瀷鐨勪嬌鐢?br />聽 DECLARE
聽TYPE t_Rec IS RECORD(
聽聽student_id NUMBER(4),
聽聽first_name VARCHAR2(20):='Scott',
聽聽last_name VARCHAR2(20),
聽聽major BINARY_INTEGER);
聽v_Stu t_Rec;
聽聽聽 鍚岀被鍨嬬殑RECORD鍙橀噺鍙互鐩鎬簰璧嬪?br />聽聽聽 鎸塕ECORD鍙橀噺鐨勫瓧孌佃祴鍊?璁板綍鍚?鍩熷悕)

21. %ROWTYPE
聽聽%ROWTYPE榪斿洖涓涓熀浜庢暟鎹簱琛ㄥ畾涔夌殑綾誨瀷
聽聽DECLARE
聽聽聽v_StuRec Student%ROWTYPE;
聽聽聽...
聽聽聽v_StuRec.student_id := 1234;
聽聽聽v_StuRec.first_name := 'Bush';
聽聽聽...
聽聽聽%ROwtype鍜宺ecord鐨勫尯鍒槸浠涔堬紵
聽聽聽
22. TABLE綾誨瀷
聽聽聽 TYPE 琛ㄧ被鍨?IS TABLE OF 綾誨瀷 INDEX BY BINARY_INTEGER;
聽聽聽 TABLE綾誨瀷涓巑ap<int, _T>綾諱技
聽聽聽 琛ㄤ腑鍏冪礌鐨勭被鍨嬪彲浠ユ槸澶嶅悎綾誨瀷
聽聽聽 琛岀殑鏁扮洰鐨勯檺鍒剁敱BINARY_INTEGER鐨勮寖鍥村喅瀹?br />聽聽聽 Key娌℃湁蹇呰鏄『搴忕殑
聽聽聽 褰撴暟鎹鎻掑叆琛ㄤ腑鏃訛紝琛ㄦ墍闇鐨勭┖闂村氨琚垎閰嶄簡
聽聽聽
23. TABLE綾誨瀷鐨勪緥瀛?br />聽聽聽 DECLARE
聽聽聽TYPE t_StuTable IS TABLE OF Student%ROWTYPE INDEX BY BINARY_INTEGER;
聽聽聽v_Student t_StuTable;
聽聽BEGIN
聽聽聽SELECT *
聽聽聽INTO v_Student(1001)
聽聽聽FROM Student
聽聽聽WHERE id = 1001;
聽聽END;

24. 鍙橀噺鐨勪綔鐢ㄥ煙涓庡彲瑙佹?br />聽聽 DECLARE
聽聽聽v_Num NUMBER(3, 2);
聽聽BEGIN
聽聽聽 聽v_Num := 123.45;
聽聽聽DECLARE
聽聽聽聽v_Ch VARCHAR2(10);
聽聽聽BEGIN
聽聽聽聽v_Num := 321.45;
聽聽聽聽v_Ch := 'Hello';
聽聽聽聽...
聽聽聽END;
聽聽聽...
聽聽END;
聽聽
25. 絎洓绔?br />聽聽 1.PL/SQL綆浠?br />聽聽 2. PL/SQL紼嬪簭緇撴瀯
聽聽 3. 鍙橀噺涓庢暟鎹被鍨嬄犅犅犅?br />聽聽 4. PL/SQL鎺у埗璇彞
聽聽 5. PL/SQL娓告爣
聽聽 6. 寮傚父鎹曡幏
聽聽 7. 瀛愮▼搴?br />聽聽 聽聽1. 榪囩▼
聽聽 聽聽2. 鍑芥暟
聽聽 8. 鍖?br />聽聽 9. 瑙﹀彂鍣?
聽聽聽聽聽聽
26. PL/SQL鎺у埗璇彞
聽聽聽 鏉′歡璇彞
聽聽聽 寰幆璇彞
聽聽聽 GOTO璇彞
聽聽聽 娉細鈻?鍦≒L/SQL涓紝--涓哄崟琛屾敞閲婏紝/**/涓哄琛屾敞閲娿偮犅犅?
聽聽聽
27. 鏉′歡璇彞
聽聽IF THEN ELSE END IF
聽聽IF 甯冨皵琛ㄨ揪寮? THEN
聽聽聽...
聽聽ELSIF 甯冨皵琛ㄨ揪寮? THEN
聽聽聽...
聽聽ELSE
聽聽聽...
聽聽END IF;
聽聽鏉′歡涓篘ULL涓嶧ALSE鐩稿悓聽聽
聽聽
28. 寰幆璇彞1
聽聽綆鍗曞驚鐜?br />聽聽LOOP
聽聽聽...
聽聽IF 甯冨皵琛ㄨ揪寮?THEN
聽聽聽EXIT;
聽聽END IF;
聽聽END LOOP;
聽聽
29. 寰幆璇彞2
聽聽聽 WHILE寰幆
聽聽聽 WHILE 甯冨皵琛ㄨ揪寮?LOOP
聽聽聽 聽...
聽聽聽 END LOOP;
聽聽聽
30. 寰幆璇彞3
聽聽 聽FOR寰幆
聽聽 聽FOR 寰幆璁℃暟 IN [鍙嶅悜鐨刔 涓嬮檺..涓婇檺 LOOP
聽聽 聽聽...
聽聽 聽END LOOP;
聽聽 聽
31. GOTO璇彞
聽聽GOTO 鏍囩鍚?
聽聽鍙兘鐢卞唴閮ㄧ殑璇彞鍧楄煩寰澶栭儴鍧?br />聽聽璁劇疆鏍囩
聽聽<<鏍囩鍚?gt;>
聽聽鍙互涓哄驚鐜緗爣絳?br />聽聽...
聽聽<<l_b1>>
聽聽FOR v_index IN 1..50 LOOP
聽聽聽...
聽聽聽IF v_index > 40 THEN
聽聽聽聽EXIT l_b1;
聽聽聽END IF;
聽聽END LOOP l_b1;
聽聽
32. NULL璇彞
聽聽聽 鍙互鍦ㄨ鍙ュ潡涓姞絀鴻鍙?br />聽聽聽 鐢ㄤ簬琛ュ厖璇彞鐨勫畬鏁存?br />聽聽聽 IF v_idx > 40 THEN
聽聽聽 聽...
聽聽聽 ELSE
聽聽聽 聽NULL;
聽聽聽 END IF;
聽聽聽
33. SQL涓殑PL/SQL 1
聽聽鏁版嵁鎿嶇旱璇█聽聽聽
聽聽SELECT, INSERT, DELETE, SET TRANSACTION, EXPLAIN PLAN
聽聽鏁版嵁瀹氫箟璇█
聽聽DROP, CREATE, ALTER, GRANT, REVOKE
聽聽浜嬪姟鎺у埗
聽聽COMMIT, ROLLBACK, SAVEPOINT
聽聽浼氳瘽鎺у埗
聽聽ALERT SESSION, SET ROLE
聽聽緋葷粺鎺у埗
聽聽ALERT SYSTEM
聽聽ESQL
聽聽CONNECT, DECLARE CURSOR, ALLOCATE
聽聽
34. SQL涓殑PL/SQL 2
聽聽鍙湁DML SQL鍙互鐩存帴鍦≒L/SQL涓嬌鐢?br />聽聽浣跨敤Oracle鍐呯疆鐨凞BMS_SQL鍖咃紝鍙互浣跨敤鍔ㄦ丼QL璇彞
聽聽鍔ㄦ丼QL璇彞鏄湪榪愯鏃剁敓鎴愪竴涓猄QL鐨勪覆錛屽皢璇ヤ覆鎻愪氦緇橠BMS_SQL鍖呮潵鎵ц
聽聽
35. 鍐呯疆鐨凷QL鍑芥暟
聽聽瀛楃鍑芥暟
聽聽聽CHR, CONCAT, INITCAP, LOWER, LPAD, LTRIM, RTRIM, REPLACE,
聽聽聽RPAD, SUBSTR, SUBSTRB, TRANSLATE UPPER, INSTR, ASCII,LENGTH...聽聽
聽聽鏁板瓧鍑芥暟
聽聽聽ABS, ACOS, ASIN, CEIL, EXP, FLOOR, LOG, MOD, POWER, ROUND...
聽聽鏃ユ湡鍑芥暟
聽聽聽ADD_MONTHS, LAST_DAY, MONTHS_BETWEEN, NEW_TIME, NEXT_DAY, ROUND, SYSDATE, TRUNC...
聽聽杞崲鍑芥暟
聽聽聽CHARTOROWID, CONVERT,HEXTORAW, RAWTOHEX, ROWIDTOCHAR, TO_CHAR, TO_DATE, COUNT...
聽聽聽
36. 絎簲绔?br />聽聽 1.PL/SQL綆浠?br />聽聽 2. PL/SQL紼嬪簭緇撴瀯
聽聽 3. 鍙橀噺涓庢暟鎹被鍨嬄犅犅犅?br />聽聽 4. PL/SQL鎺у埗璇彞
聽聽 5. PL/SQL娓告爣
聽聽 6. 寮傚父鎹曡幏
聽聽 7. 瀛愮▼搴?br />聽聽 聽聽1. 榪囩▼
聽聽 聽聽2. 鍑芥暟
聽聽 8. 鍖?br />聽聽 9. 瑙﹀彂鍣?br />聽聽
37. 娓告爣
聽娓告爣鐢ㄤ簬鎻愬彇澶氳鏁版嵁闆?br />聽娓告爣鐨勪嬌鐢?br />聽聽-澹版槑娓告爣
聽聽-涓烘煡璇㈡墦寮娓告爣
聽聽-灝嗙粨鏋滄彁鍙栧嚭鏉ワ紝瀛樺叆PL/SQL鍙橀噺涓?br />聽聽-鍏抽棴娓告爣聽聽

38. 澹版槑娓告爣
聽DECLARE CURSOR 娓告爣鍚?IS 閫夋嫨澹版槑
聽濡傛灉鍦ㄩ夋嫨澹版槑涓嬌鐢ㄤ簡PL/SQL錛屽彉閲忕殑澹版槑蹇呴』鏀懼湪娓告爣鍓嶉潰
聽v_major students.major%TYPE;
聽DECLARE
聽聽CURSOR c_student IS
聽聽聽SELECT first_name, last_name
聽聽聽FROM students
聽聽聽WHERE major = v_major;
聽鍙橀噺鍚嶄笌鍒楀悕涓鑷翠絾涓嶅悓

39. 鎵撳紑娓告爣
聽OPEN 娓告爣鍚?br />聽鑻ラ夋嫨澹版槑宸測滅瓑寰呮洿鏂扳濆垯鍔犻攣銆?/p>

40. 浠庢父鏍囧彇
聽FETCH鐨勪袱縐嶅艦寮?br />聽聽-FETCH 娓告爣鍚?INTO 鍙橀噺1, 鍙橀噺2,...;
聽聽-FETCH 娓告爣鍚?INTO 鍙橀噺璁板綍

41.聽鍏抽棴娓告爣
聽聽聽 CLOSE 娓告爣鍚?
聽聽聽 娓告爣浣跨敤鍚庡簲璇ュ叧闂?br />聽聽聽 聽-FETCH鍏抽棴鍚庣殑娓告爣鏄潪娉曠殑
聽聽聽 聽-鍏抽棴涓涓叧闂簡鐨勬父鏍囦篃鏄潪娉曠殑
聽聽聽 聽
42. 娓告爣鐨勫睘鎬?br />聽聽%FOUND聽聽聽 聽
聽聽%NOTFOUND
聽聽%ISOPEN
聽聽%ROWCOUNT
聽聽
43. 娓告爣鐨凢ETCH寰幆
聽聽LOOP
聽聽聽FETCH 娓告爣 INTO...
聽聽聽EXIT WHEN 娓告爣%NOTFOUND;
聽聽END LOOP; 聽聽
聽聽WHILE 娓告爣%FOUND LOOP
聽聽聽聽
44. 娓告爣鐨勪緥瀛?br />聽聽Mycursor:
聽聽聽print name and id from student where age < 30
聽聽For_cursor:
聽聽聽Print dept_id, user_id, last_name, first_name from s_emp
聽聽聽where dept_id < 40
聽聽聽
45. 甯﹀弬鏁扮殑娓告爣
聽聽CURSOR鍙互甯﹀弬鏁?br />聽聽DECLARE
聽聽聽CURSOR c_student(p_major students.major%TYPE)
聽聽聽SELECT *
聽聽聽FROM students
聽聽聽WHERE major = p_major;
聽聽BEGIN
聽聽聽OPEN c_student(101);
聽聽聽...
聽聽聽
46. 絎叚绔?br />聽聽 1.PL/SQL綆浠?br />聽聽 2. PL/SQL紼嬪簭緇撴瀯
聽聽 3. 鍙橀噺涓庢暟鎹被鍨嬄犅犅犅?br />聽聽 4. PL/SQL鎺у埗璇彞
聽聽 5. PL/SQL娓告爣
聽聽 6. 寮傚父鎹曡幏
聽聽 7. 瀛愮▼搴?br />聽聽 聽聽1. 榪囩▼
聽聽 聽聽2. 鍑芥暟
聽聽 8. 鍖?br />聽聽 9. 瑙﹀彂鍣犅犅?br />聽聽
47. 寮傚父
聽聽PL/SQL閿欒
聽聽聽-緙栬瘧鏃?br />聽聽聽-榪愯鏃?br />聽聽榪愯鏃剁殑鍑洪敊澶勭悊
聽聽聽-EXCEPTION
聽聽聽
48. 寮傚父澶勭悊鍧?br />聽聽DECLARE
聽聽聽...
聽聽BEGIN
聽聽聽...
聽聽EXCEPTION
聽聽聽WHEN OTHERS THEN
聽聽聽聽handler_error(...);
聽聽END;聽
聽聽
49. 鐢ㄦ埛鑷畾涔夌殑寮傚父
聽聽DECLARE
聽聽聽e_TooManyStudents EXCEPTION;
聽聽BEGIN
聽聽聽...
聽聽聽RAISE e_TooManyStudents;
聽聽聽...
聽聽EXCEPTION
聽聽聽WHEN e_TooManyStudents THEN
聽聽聽...
聽聽END;
聽聽
50. 棰勫畾涔夌殑ORACLE寮傚父聽聽聽
聽聽ORA-0001
聽聽聽-DUP_VAL_ON_INDEX
聽聽ORA-0051
聽聽聽-TIMEOUT_ON_RESOURCE
聽聽ORA-1001
聽聽聽-INVALID_CURSOR
聽聽聽...
聽聽ORA-6533
聽聽聽-SUBSCRIPT_BEYOND_COUNT
聽聽聽
51. 瑙﹀彂寮傚父
聽聽RAISE exception_variable
聽聽聽DECLARE
聽聽聽聽A EXCEPTION
聽聽聽BEGIN
聽聽聽聽...
聽聽聽聽RAISE A;
聽聽聽聽...
聽聽聽EXCEPTION
聽聽聽聽WHEN A THEN
聽聽聽聽...
聽聽聽END;
聽聽聽
52. 澶勭悊寮傚父
聽聽EXCEPTION
聽聽聽WHEN e_TooManyStudents THEN
聽聽聽聽INSERT INTO log_file(info)
聽聽聽聽VALUES('Major 1100 has' || v_CurStudents || 'max aloowed is' || v_Max);
聽聽END;
聽聽
53. 澶勭悊鎵鏈夌殑寮傚父
聽聽寮傚父鐨勪紶閫?br />聽聽澶勭悊鎵鏈夊叾浠栧紓甯?br />聽聽EXCEPTION
聽聽聽WHEN e_TooManyStudents THEN
聽聽聽聽...
聽聽聽WHEN OTHERS THEN
聽聽聽聽v_ErrCode := SQLCODE;
聽聽聽聽v_ErrText := SUBSTR(SQLERRM, 1, 200);
聽聽聽聽INSERT INTO log_file(code, message, info)
聽聽聽聽VALUES(v_ErrCode, v_ErrCode, v_ErrText, 'ORACLE Error');
聽聽聽END;
聽聽聽
54. 絎竷绔?br />聽聽 1.PL/SQL綆浠?br />聽聽 2. PL/SQL紼嬪簭緇撴瀯
聽聽 3. 鍙橀噺涓庢暟鎹被鍨嬄犅犅犅?br />聽聽 4. PL/SQL鎺у埗璇彞
聽聽 5. PL/SQL娓告爣
聽聽 6. 寮傚父鎹曡幏
聽聽 7. 瀛愮▼搴?br />聽聽 聽聽1. 榪囩▼
聽聽 聽聽2. 鍑芥暟
聽聽 8. 鍖?br />聽聽 9. 瑙﹀彂鍣犅犅犅犅?br />聽聽
55. 瀛愮▼搴?br />聽聽鍖垮悕鍧?br />聽聽聽-鍖垮悕鍧椾笉瀛樺湪浜庢暟鎹簱涓?br />聽聽聽-姣忔浣跨敤鏃墮兘浼氳繘琛岀紪璇?br />聽聽聽-涓嶈兘鍦ㄥ叾浠栧潡涓浉浜掕皟鐢?br />聽聽甯﹀悕鍧?br />聽聽聽-鍙瓨鍌ㄤ簬鏁版嵁搴撲腑
聽聽聽-鍙互鍦ㄤ換浣曢渶瑕佺殑鍦版柟璋冪敤
聽聽聽-榪囩▼銆佸嚱鏁般佸寘銆佽Е鍙戝櫒聽
聽聽聽
56. 榪囩▼
聽聽鍒涘緩procedure
聽聽CREATE [OR REPLACE] PROCEDURE proc_name
聽聽聽[(arg_name[{IN | OUT | IN OUT}]TYPE,
聽聽聽聽...
聽聽聽聽arg_name[{IN | OUT | IN OUT}]TYPE)]聽聽聽
聽聽聽聽{IS | AS}
聽聽procedure_body
聽聽
57. 榪囩▼鐨勫弬鏁版ā寮?br />聽聽IN
聽聽聽-鍦ㄨ皟鐢ㄨ繃紼嬬殑鏃跺欙紝瀹為檯鍙傛暟鐨勫艱浼犻掔粰璇ヨ繃紼嬶紱鍦ㄨ繃紼嬪唴閮紝褰㈠弬鏄彧鍙鐨勩?br />聽聽OUT
聽聽聽-鍦ㄨ皟鐢ㄨ繃紼嬫椂錛屼換浣曠殑瀹炲弬灝嗚蹇界暐錛涘湪榪囩▼鍐呴儴錛屽艦鍙傛槸鍙彲鍐欑殑銆?br />聽聽IN OUT
聽聽聽-鏄疘N涓嶰UT聽鐨勭粍鍚堬紝鍦ㄨ皟鐢ㄨ繃紼嬬殑鏃跺欙紝瀹炲弬鐨勫煎彲浠ヨ浼犻掔粰璇ヨ繃紼嬶紱鍦ㄨ繃紼嬪唴閮紝褰㈠弬涔熷彲浠ヨ璇誨嚭涔熷彲浠ヨ鍐欏叆錛?br />聽聽聽榪囩▼緇撴潫鏃訛紝鎺у埗浼氳繑鍥炵粰鎺у埗鐜錛岃屽艦寮忓弬鏁扮殑鍐呭灝嗚祴緇欒皟鐢ㄦ椂鐨勫疄闄呭弬鏁般?br />聽聽鍙傛暟鐨勭己鐪佹ā寮忔槸IN
聽聽
58. 榪囩▼鐨勪富浣?br />聽聽PROCEDURE BODY
聽聽-榪囩▼鐨勪富浣撴槸涓涓嫢鏈夊0鏄庯紝鎵ц鍜屽紓甯稿鐞嗙殑瀹屾暣鐨凱L/SQL鍧椔犅?br />聽聽-澹版槑閮ㄥ垎鍦↖S鎴朅S鍏抽敭瀛椾笌BEGIN鍏抽敭瀛椾箣闂?br />聽聽-鎵ц閮ㄥ垎鍦˙EGIN鍜孍XCEPTION涔嬮棿
聽聽-寮傚父澶勭悊鍦‥XCEPTION涓嶦ND涔嬮棿
聽聽
59. 榪囩▼鐨勪緥瀛惵犅?br />聽聽CREATE OR REPLACE PROCEDURE ModeText(
聽聽聽p_InParm IN NUMBER,
聽聽聽p_OutParm OUT NUMBER,
聽聽聽p_InOut IN OUT NUMBER)
聽聽IS
聽聽聽v_LocalVar NUMBER;
聽聽BEGIN
聽聽聽v_LocalVar := p_InParm;聽聽聽//legal
聽聽聽p_InParm := 7;聽聽聽聽聽聽聽//illegal聽聽聽
聽聽聽p_OutParm := 7;聽聽聽聽聽聽聽//legal
聽聽聽v_LocalVar := p_OutParm;聽聽//illegal
聽聽聽v_LocalVar := p_InOutParm;聽//legal
聽聽聽p_InOutParm := 7;聽聽聽聽聽聽//legal
聽聽聽...
聽聽END ModeTest;
聽聽
60. 璋冪敤榪囩▼鐨勪緥瀛?br />聽聽DECLARE
聽聽聽v_var1 NUMBER := 1001;
聽聽聽v_var2 NUMBER := 1234;
聽聽BEGIN
聽聽聽ModeTest(10, v_var1, v_var2);
聽聽END;
聽聽DECLARE
聽聽聽v_var1 NUMBER;
聽聽BEGIN
聽聽聽ModeTest(12, v_var1, 10);
聽聽END;
聽聽
61. 鎸囧畾瀹炲弬鐨勬ā寮?br />聽聽浣嶇疆鏍囩ず娉?br />聽聽聽-璋冪敤鏃舵坊鍏ユ墍鏈夊弬鏁幫紝瀹炲弬涓庡艦鍙傛寜欏哄簭涓涓瀵瑰簲
聽聽鍚嶅瓧鏍囩ず娉?br />聽聽聽-璋冪敤鏃剁粰鍑哄艦鍙傚悕瀛楋紝騫剁粰鍑哄疄鍙?br />聽聽聽聽ModeTest(p_InParm => 12,
聽聽聽聽聽聽聽聽 p_OutParm => v_var1,
聽聽聽聽聽聽聽聽 p_InOut => 10);
聽聽涓ょ鏂規硶鍙互娣風敤
聽聽聽-娣風敤鏃訛紝絎竴涓弬鏁板繀欏婚氳繃浣嶇疆鏉ユ寚瀹?br />聽聽聽-鍚嶅瓧鏍囩ず娉曞浜庡弬鏁板緢澶氭椂錛屽彲鎻愰珮紼嬪簭鐨勫彲璇繪?br />聽聽聽
62. 浣跨敤緙虹渷鍙傛暟鏃?br />聽聽褰㈠弬鍙互鎸囨槑緙虹渷鍊?br />聽聽parm_name[mode]type{:= | DEFAULT} init_value
聽聽浣嶇疆鏍囩ず娉曟椂錛屾墍鏈夌殑緙虹渷鍊奸兘鏀懼湪鏈鍚庨潰
聽聽-浣跨敤鍚嶅瓧鏍囩ず娉曞垯鏃犳墍璋?br />聽聽濡傛灉浣跨敤浜嗙己鐪佸鹼紝灝介噺灝嗙己鐪佸兼斁鍦ㄥ弬鏁拌〃鐨勬湯灝?br />聽聽
63. 鍑芥暟
聽聽鍑芥暟鍦ㄦ墍鏈夌殑鍦版柟閮戒笌榪囩▼鐩鎬技
聽聽聽-閮芥湁鍚嶅瓧
聽聽聽-閮芥湁緇熶竴鐨勫艦寮忥細澹版槑銆佹墽琛屼笌寮傚父澶勭悊
聽聽聽-鍙互瀛樺偍鍦ㄦ暟鎹簱涓紝涔熷彲浠ュ0鏄庡湪鏃犲悕鍧楃殑鍐呴儴
聽聽宸埆
聽聽聽-榪囩▼璋冪敤鏈韓鏄竴涓狿L/SQL璇彞
聽聽聽-鍑芥暟璋冪敤鏄〃杈懼紡鐨勪竴閮ㄥ垎
聽聽娉細鈻?鍙﹀錛屽嚱鏁版湁榪斿洖鍊鹼紝鑰岃繃紼嬫病鏈夈?br />聽聽聽
64. 鍑芥暟鐨勫0鏄?br />聽聽CREATE [OR REPLACE] FUNCTION func_name
聽聽聽[(arg_name[{IN | OUT | IN OUT}]TYPE,
聽聽聽聽...
聽聽聽聽arg_name[{IN | OUT | IN OUT}]TYPE)]
聽聽RETURN TYPE
聽聽{IS | AS}
聽聽function_Body
聽聽
65. RETURN璇彞
聽聽鍦ㄥ嚱鏁扮殑涓諱綋鍐呴儴錛宺eturn璇彞鐢ㄦ潵灝嗘帶鍒墮氳繃涓涓暟鍊艱繑鍥炵粰璋冪敤鐜
聽聽聽-聽RETURN <琛ㄨ揪寮?gt;;
聽聽鍦ㄤ竴涓嚱鏁頒富浣撲腑錛屽彲浠ヤ嬌鐢ㄥ涓繑鍥炶鍙?br />聽聽娌℃湁榪斿洖璇彞鐨勫嚱鏁板皢鏄竴涓敊璇?br />聽聽
66. 鍑芥暟鏍峰紡
聽聽鍑芥暟鍙互閫氳繃OUT鍙傛暟鏉ヨ繑鍥炲涓暟鍊?br />聽聽鍑芥暟鍙互鎺ユ敹緙虹渷鍙傛暟
聽聽
67. 鍒犻櫎榪囩▼涓庡嚱鏁?br />聽聽DROP PROCEDURE procedure_name;
聽聽DROP FUNCTION function_name;聽聽聽聽 聽聽
聽聽
68. 瀛愮▼搴忕殑浣嶇疆
聽聽瀛樺偍瀛愮▼搴?br />聽聽聽-閫氳繃CREATE OR REPLACE鍛戒護鍒涘緩聽聽
聽聽聽-浠ョ紪璇戝悗鐨勫艦寮忓瓨鏀懼湪鏁版嵁搴撲腑
聽聽鏈湴瀛愮▼搴?br />聽聽聽-娌℃湁CREATE OR REPLACE鍏抽敭瀛?br />聽聽聽-瀛愮▼搴忕殑瀹氫箟鏀懼湪鏃犲悕鍧楃殑澹版槑閮ㄥ垎
聽聽聽-瀛愮▼搴忚璇ユ棤鍚嶅潡浣跨敤
聽聽聽
69. 鏈湴瀛愮▼搴?br />聽聽DECLARE
聽聽聽v_var VARCHAR2;
聽聽聽FUNCTION func(p_Fname IN VARCHAR2, p_Lname IN VARCHAR2)
聽聽聽RETURN VARCHAR2 IS
聽聽聽BEGIN
聽聽聽聽...
聽聽聽END func;
聽聽BEGIN
聽聽聽v_var := func('First Name', 'Last Name');
聽聽聽...
聽聽END;
聽聽
70. 絎叓绔?br />聽聽 1.PL/SQL綆浠?br />聽聽 2. PL/SQL紼嬪簭緇撴瀯
聽聽 3. 鍙橀噺涓庢暟鎹被鍨嬄犅犅犅?br />聽聽 4. PL/SQL鎺у埗璇彞
聽聽 5. PL/SQL娓告爣
聽聽 6. 寮傚父鎹曡幏
聽聽 7. 瀛愮▼搴?br />聽聽 聽聽1. 榪囩▼
聽聽 聽聽2. 鍑芥暟
聽聽 8. 鍖?br />聽聽 9. 瑙﹀彂鍣?br />聽聽
71. 鍖?br />聽聽鍖呮槸鍙互灝嗙浉鍏沖璞″瓨鍌ㄥ湪涓璧風殑PL/SQL緇撴瀯
聽聽鍖呭彧鑳藉瓨鍌ㄥ湪鏁版嵁搴撲腑錛屼笉鑳芥槸鏈湴鐨勩?br />聽聽鍖呮槸涓涓甫鏈夊悕瀛楃殑澹版槑
聽聽鐩稿綋浜庝竴涓狿L/SQL鍧楃殑澹版槑閮ㄥ垎
聽聽鍦ㄥ潡鐨勫0鏄庨儴鍒嗗嚭鐜扮殑浠諱綍涓滆タ閮借兘鍑虹幇鍦ㄥ寘涓?br />聽聽鍖呬腑鍙互鍖呭惈榪囩▼銆佸嚱鏁般佹父鏍囦笌鍙橀噺
聽聽鍙互浠庡叾浠朠L/SQL鍧椾腑寮曠敤鍖咃紝鍖呮彁渚涗簡鍙敤浜嶱L/SQL鐨勫叏灞鍙橀噺
聽聽
72. 鍖呰鑼兟犅?br />聽聽鍖呭ご錛氬寘鍚簡鏈夊叧鍖呯殑鍐呭鐨勪俊鎭?br />聽聽鍖呭ご涓嶅惈浠諱綍榪囩▼鐨勪唬鐮?br />聽聽鍖呰鑼冪殑璇硶
聽聽CREATE [OR REPLACE] PACKAGE pack_name{IS | AS}
聽聽聽procedure_specification | function_specification |
聽聽聽variable_declaration | type_definition |
聽聽聽exception_declaration | cursor_declaration
聽聽END pack_name;
聽聽
73. 鍖呭ご鐨勪緥瀛?
聽聽CREAE OR REPLACE PACKAGE pak_test AS
聽聽聽PROCEDURE AddStudent(p_StuID IN students.id%TYPE,
聽聽聽聽聽聽聽聽聽聽聽聽聽 p_Dep IN classes.department%TYPE,
聽聽聽聽聽聽聽聽聽聽聽聽聽 p_Course IN classes.course%TYPE);聽聽
聽聽聽PROCEDURE RemoveStudent(p_StuID IN students.id%TYPE);
聽聽聽e_StudentNotRegistered EXCEPTION;
聽聽聽TYPE t_StuIDTable IS TABLE OF students.id%TYPE INDEX
聽聽聽BY BINARY_INTEGER;
聽聽END pak_name;
聽聽聽聽聽聽聽
74. 鍖呭ご鐨勪緥瀛?
聽聽鍦ㄥ寘pak_test涓寘鍚簡涓や釜榪囩▼錛屼竴涓被鍨嬩笌涓涓紓甯?br />聽聽AddStudent
聽聽RemoveStudent
聽聽t_StuIDTable
聽聽e_StudentNotRegistered
聽聽鍖呯殑閮ㄤ歡鍙互鎸変換鎰忔搴忓嚭鐜幫紝浣嗗璞″繀欏誨0鏄庡湪琚紩鐢ㄧ殑鍓嶉潰
聽聽鎵鏈夎繃紼嬫垨鍑芥暟鐨勪唬鐮佷笉鑳藉嚭鐜板湪鍖呭ご涓?br />聽聽
75. 鍖呬富浣撀犅?br />聽聽鍖呬富浣撴槸鍙夌殑錛屽鏋滃寘澶翠腑娌℃湁浠諱綍鍑芥暟涓庤繃紼嬶紝鍒欏寘涓諱綋鍙互涓嶉渶瑕?br />聽聽鍖呬富浣撲笌鍖呭ご瀛樻斁鍦ㄤ笉鍚岀殑鏁版嵁瀛楀吀涓?br />聽聽濡傛灉鍖呭ご鐨勭紪璇戜笉鎴愬姛錛屽寘涓諱綋灝辨棤娉曟紜殑緙栬瘧鍑烘潵
聽聽鍖呬富浣撲腑鍖呭惈浜嗗湪鍖呭ご涓0鏄庣殑鎵鏈夎繃紼嬩笌鍑芥暟鐨勪唬鐮?br />聽聽榪囩▼涓庡嚱鏁扮殑瑙勮寖鍦ㄥ寘澶翠笌鍖呬富浣撲腑蹇呴』涓鑷?br />聽聽瑙勮寖鍖呮嫭瀛愮▼搴忕殑鍚嶅瓧錛屽弬鏁扮殑鍚嶅瓧浠ュ強鍙傛暟鐨勬ā寮忥細鍖呮嫭綾誨瀷涓庨『搴?br />聽聽
76. 鍖呬富浣撶殑璇硶
聽聽CREATE OR REPLACE PACKAGE BODY pak_test AS
聽聽聽PROCEDURE AddStudent(p_StuID IN students.id%TYPE,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 p_Dep IN classes.department%TYPE,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 p_Course IN classes.course%TYPE) IS
聽聽聽BEGIN
聽聽聽聽...
聽聽聽END AddStudent;
聽聽聽PROCEDURE聽RemoveStudent(p_StuID IN students.id%TYPE) IS
聽聽聽BEGIN
聽聽聽聽...
聽聽聽END RemoveStudent;
聽聽END pak_test;
聽聽
77. 鍖呯殑浣滅敤鍩?br />聽聽鍦ㄥ寘澶翠腑澹版槑鐨勬墍鏈変笢瑗垮湪鍖呯殑澶栭潰閮藉彲浠ヤ嬌鐢?br />聽聽浣跨敤鏃跺繀欏繪寚鏄庡寘鐨勫悕瀛?br />聽聽鐩存帴璋冪敤鍖呬腑鐨勮繃紼?br />聽聽pak_test.AddStudent(100010, 'CS', 101);
聽聽鍦ㄥ寘鐨勪富浣撲腑鍙互鐩存帴浣跨敤鍖呭ご涓0鏄庣殑瀵硅薄
聽聽涓嶉渶瑕佹寚鏄庡寘鐨勫悕瀛?br />聽聽
78. 鍖呬腑瀛愮▼搴忕殑閲嶈澆
聽聽鍚屼竴涓寘涓殑榪囩▼涓庡嚱鏁伴兘鍙互閲嶈澆
聽聽鐩稿悓鐨勮繃紼嬫垨鍑芥暟鍚嶅瓧錛屼絾鍙傛暟涓嶅悓
聽聽閲嶈澆涓嶈兘浠呬粎渚濇嵁鏄弬鏁板悕瀛楀拰妯″紡涓嶅悓
聽聽閲嶈澆涓嶈兘浠呬粎渚濇嵁鍑芥暟鐨勮繑鍥炵被鍨?br />聽聽閲嶈澆鐨勫弬鏁板繀欏繪槸涓嶅悓綾誨瀷鏃?br />聽聽閲嶈澆瑕佹眰鍙傛暟綾誨瀷蹇呴』涓嶅悓
聽聽鑰屼笖瑕佹眰鏄笉鍚岀被鍨嬫棌鐨?br />聽聽鏃犳硶鍖哄垎CHAR涓嶸ARCHAR2
聽聽
79. 鍖呯殑鍒濆鍖?br />聽聽鍖呭瓨鏀懼湪鏁版嵁搴撲腑
聽聽鍦ㄧ涓嬈¤璋冪敤鐨勬椂鍊欙紝鍖呬粠鏁版嵁搴撲腑璋冨叆鍐呭瓨騫惰鍒濆鍖?br />聽聽鍖呬腑瀹氫箟鐨勬墍鏈夊彉閲忛兘琚垎閰嶅唴瀛?br />聽聽姣忎釜浼氳瘽閮藉皢鎷ユ湁鑷繁鐨勫寘鍐呭彉閲忕殑鍓湰
聽聽鍙互鎸囧畾鍖呯殑鍒濆鍖栦唬鐮?br />聽聽CREATE OR REPLACE PACKAGE BODY pac_name{IS | AS}聽聽聽聽聽聽
聽聽聽...
聽聽BEGIN
聽聽聽--Initialization code
聽聽END pac_name;
聽聽
80. 絎節绔?br />聽聽 1.PL/SQL綆浠?br />聽聽 2. PL/SQL紼嬪簭緇撴瀯
聽聽 3. 鍙橀噺涓庢暟鎹被鍨嬄犅犅犅?br />聽聽 4. PL/SQL鎺у埗璇彞
聽聽 5. PL/SQL娓告爣
聽聽 6. 寮傚父鎹曡幏
聽聽 7. 瀛愮▼搴?br />聽聽 聽聽1. 榪囩▼
聽聽 聽聽2. 鍑芥暟
聽聽 8. 鍖?br />聽聽 9. 瑙﹀彂鍣?聽聽
聽聽
81. 瑙﹀彂鍣?br />聽聽瑙﹀彂鍣ㄤ笌榪囩▼銆佸嚱鏁扮被浼?br />聽聽閮芥槸甯︽湁鍚嶅瓧鐨勬墽琛屽潡
聽聽閮芥湁澹版槑銆佹墽琛屼綋鍜屽紓甯稿鐞嗛儴鍒?br />聽聽瑙﹀彂鍣ㄤ笌榪囩▼銆佸嚱鏁扮殑宸埆
聽聽瑙﹀彂鍣ㄥ繀欏誨瓨鍌ㄥ湪鏁版嵁搴撲腑
聽聽瀵逛簬榪囩▼鍜屽嚱鏁幫紝蹇呴』鏄懼紡鍦扮敱鍙︿竴涓繍琛屽潡璋冪敤
聽聽瀵逛簬瑙﹀彂鍣紝鏄敱瑙﹀彂浜嬩歡鑷姩嬋鍙?br />聽聽瑙﹀彂浜嬩歡鏄湪鏁版嵁搴撹〃涓婃墽琛岀殑DML鏁版嵁鎿嶄綔
聽聽INSERT, UPDATE, DELETE聽聽 聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽聽
聽聽
82. 瑙﹀彂鍣ㄧ殑浣滅敤
聽聽鐢ㄤ簬緇存姢鏁版嵁鐨勫畬鏁存?br />聽聽鏈変簺澶嶆潅鐨勬暟鎹畬鏁存х害鏉熸棤娉曞湪鍒涘緩琛ㄧ殑鏃跺埢閫氳繃澹版槑鎬х害鏉熻В鍐?br />聽聽閫氳繃鏁版嵁搴撹〃鐨勮褰曠殑淇敼鏉ユ墽琛屽璁″姛鑳?br />聽聽褰撹〃琚慨鏀圭殑鏃跺欙紝鑷姩緇欏叾浠栭渶瑕佹墽琛屾搷浣滅殑紼嬪簭鍙戜俊鍙?br />聽聽
83. 鍒涘緩瑙﹀彂鍣?br />聽聽璇硶
聽聽CREATE [OR REPLACE]聽TRIGGER trigger_name
聽聽{BEFORE | AFTER} triggering_event ON table_reference
聽聽[FOR EACH ROW[WHEN trigger_condition]]
聽聽trigger_body;
聽聽蹇呴』鐨勯儴鍒?br />聽聽瑙﹀彂鍣ㄥ悕錛歵rigger_name
聽聽瑙﹀彂浜嬩歡錛歵riggering_event
聽聽瑙﹀彂鍣ㄤ富浣擄細trigger_body
聽聽鍙夐儴鍒?br />聽聽WHEN瀛愬彞
聽聽
84. 瑙﹀彂鍣ㄧ殑渚嬪瓙
聽聽CREATE OR REPLACE TRIGGER UpdateMajorStats
聽聽AFTER INSERT OR DELETE OR UPDATE ON students
聽聽DECLARE
聽聽聽CURSOR c_Statistics聽IS
聽聽聽聽SELECT major, COUNT(*) total_students, SUM(current_credits) total_credits
聽聽聽聽聽FROM students
聽聽聽聽聽GROUP BY major;
聽聽BEGIN
聽聽聽FOR v_StatsRecord in c_Statistics LOOP
聽聽聽聽UPDATE major_stats
聽聽聽聽聽SET total_credits = v_StatsRecord.total_credits,
聽聽聽聽聽聽聽total_students = v_StatsRecord.total_students
聽聽聽聽聽WHERE major = v_StatsRecord.major;
聽聽聽聽聽IF SQL%NOTFOUND THEN
聽聽聽聽聽聽INSERT INTO major_stats(major, total_credits, total_students)
聽聽聽聽聽聽聽VALUES(v_StatsRecord.major, v_StatsRecord.total_credits, v_StatsRecord.total_students);
聽聽聽聽聽END IF;
聽聽聽END LOOP;
聽聽END UpdateMajorStats;
聽聽
85. 瑙﹀彂鍣ㄧ粍浠?br />聽聽瑙﹀彂鍣ㄥ悕
聽聽聽-鍦ㄥ悓涓涓暟鎹簱涓?br />聽聽聽聽榪囩▼銆佸寘涓庤〃鐨勫悕瀛楃┖闂寸浉鍚?br />聽聽聽聽瑙﹀彂鍣ㄤ嬌鐢ㄥ崟鐙殑鍚嶅瓧絀洪棿
聽聽聽聽瑙﹀彂鍣ㄥ彲浠ヤ笌琛ㄥ悓鍚?br />聽聽瑙﹀彂鍣ㄧ被鍨?br />聽聽聽-瑙﹀彂浜嬩歡鍐沖畾浜嗚Е鍙戝櫒鐨勭被鍨?br />聽聽聽聽璇彞錛欼NSERT, UPDATE, DELETE
聽聽聽聽瀹氭椂錛欱EFORE, AFTER
聽聽聽聽綰у埆錛?br />聽聽聽聽聽-琛岀駭瑙﹀彂鍣?FOR EACH ROW)錛屽鐢辮Е鍙戣鍙ュ獎鍝嶇殑姣忎竴琛岀偣鐏竴嬈?br />聽聽聽聽聽-璇彞綰цЕ鍙戝櫒錛屼粎鍦ㄨ鍙ユ墽琛屽墠/鍚庢墽琛屼竴嬈?br />聽聽聽聽聽
86.聽瑙﹀彂鍣ㄧ被鍨?br />聽聽鍏辨湁12縐嶈Е鍙戝櫒綾誨瀷
聽聽涓変釜璇彞(INSERT/UPDATE/DELETE)
聽聽涓ょ綾誨瀷(涔嬪墠/涔嬪悗)
聽聽涓ょ綰у埆(row-level/statement-level)
聽聽涓涓〃鏈澶氬彲浠ュ畾涔?2涓Е鍙戝櫒
聽聽PL/SQL2.1浠ュ悗鐗堟湰錛屽浜庢瘡縐嶇被鍨嬪彲浠ユ嫢鏈夊涓Е鍙戝櫒
聽聽
87. 瑙﹀彂鍣ㄧ殑闄愬埗
聽聽瑙﹀彂鍣ㄧ殑涓諱綋鏄疨L/SQL璇彞鍧?br />聽聽鎵鏈夎兘鍑虹幇鍦≒L/SQL鍧椾腑鐨勮鍙ュ湪瑙﹀彂鍣ㄤ富浣撲腑閮芥槸鍚堟硶鐨勯檺鍒?br />聽聽涓嶅簲璇ヤ嬌鐢ㄤ簨鍔℃帶鍒惰鍙?br />聽聽COMMIT, ROLLBACK, SAVEPOINT
聽聽鐢辮Е鍙戝櫒璋冪敤鐨勪換浣曡繃紼嬩笌鍑芥暟閮戒笉鑳戒嬌鐢ㄤ簨鍔℃帶鍒惰鍙?br />聽聽涓嶈兘澹版槑浠諱綍LONG鎴朙ONG RAW鍙橀噺
聽聽鍙互璁塊棶鐨勮〃鏈夐檺
聽聽
88. 瑙﹀彂鍣ㄧ殑涓諱綋鍙互璁塊棶鐨勮〃
聽聽鍙樺寲琛?br />聽聽琚獶ML璇彞姝e湪淇敼鐨勮〃錛屼害鍗沖畾涔夎Е鍙戝櫒鐨勮〃
聽聽闄愬埗琛?br />聽聽鏈変簺琛ㄥ湪鍒涘緩鐨勬椂鍊欏氨甯︽湁鍙傝冨畬鏁存ч檺鍒剁殑澹版槑
聽聽涓婚敭涓庡閿?br />聽聽瑙﹀彂鍣ㄤ富浣撲腑鐨勯檺鍒?br />聽聽涓嶅彲浠ヨ鍙栨垨淇敼浠諱綍鍙樺寲琛?br />聽聽涓嶅彲浠ヨ鍙栨垨淇敼闄愬埗琛ㄧ殑涓婚敭錛屽敮涓鍊煎垪錛屽閿垪
聽聽
89. 鐩稿叧淇℃伅
聽聽ORACLE浜у搧涓庤祫鏂欎俊鎭?br />聽聽http://www.oracle.com
聽聽ORACLE 8i鐨勮祫鏂?br />聽聽http://gwynne.cs.ualberta.ca/~oracle/817doc/index.htm
聽聽
90. 瀛︾睄綆$悊淇℃伅搴?br />聽聽璁捐涓涓猟ata schema, 灝唗arena鍏徃鐨勫綾嶇鐞嗕俊鎭緩绔嬪湪鏁版嵁搴撲腑
聽聽搴旇鍖呮嫭涓嬪垪淇℃伅
聽聽聽瀛﹀憳淇℃伅
聽聽聽璇劇▼淇℃伅
聽聽聽鐝駭淇℃伅
聽聽聽...
聽聽寤虹珛鏁版嵁搴撹〃鎴栫浉鍏寵鍥?br />聽聽聽浣跨敤sqlplus?浣跨敤PL/SQL?
聽聽浣跨敤PL/SQL紼嬪簭鏉ュ畬鎴?br />聽聽聽杈撳叆閮ㄥ垎鏁版嵁
聽聽聽瀹屾垚綆鍗曟煡璇㈠姛鑳?br />聽聽浣跨敤Pro*C瀹屾垚涓嬪垪鍔熻兘
聽聽鏁版嵁鎻掑叆銆佷慨鏀逛笌鍒犻櫎
聽聽鏁版嵁鏌ヨ
聽聽
91. 緋葷粺浣跨敤璁拌垂緋葷粺
聽聽鎬濊冨茍璁捐璁板笎緋葷粺涓嬌鐢ㄧ殑data schema
聽聽
92. 璋㈣阿

鈽呭ソ涔︽帹鑽愶細
聽聽Oracle9i PL/SQL紼嬪簭璁捐(Oracle9i PL/SQL Programming)
聽聽Oracle Express鍑哄搧錛屽畼鏂廣佹潈濞侊紝縐夋壙浜嗛害鏍煎姵甯屽皵涓璐殑涓ヨ皚娌誨鐨勪綔椋庯紝鑰屼笖涓や綅璇戣呯炕璇戜篃寰堝埌浣?br />聽
聽 聽Oracle9i寮鍙戞寚鍗楋細PL/SQL紼嬪簭璁捐(Oracle9i Developer: PL/SQL Programming)
聽 聽璇ヤ功鎻愪緵浜嗗ぇ閲忓疂璐電殑瀹為檯緇冧範鏈轟細錛屽寘鎷愭鎿嶄綔鐨勬寚瀵間互鍙婃瘡涓绔犱腑鐨勫涔犻銆佽澶栦綔涓氫互鍙婂疄渚嬬爺絀?br />聽 聽聽

聽聽聽聽
聽聽聽聽聽聽聽
聽聽
聽聽
聽聽聽聽
聽聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽

聽聽
聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽



liulang 2006-09-25 23:18 鍙戣〃璇勮
]]>
PL/SQL鏁版嵁搴撶紪紼?/title><link>http://www.tkk7.com/hitlang/articles/71857.html</link><dc:creator>liulang</dc:creator><author>liulang</author><pubDate>Mon, 25 Sep 2006 15:18:00 GMT</pubDate><guid>http://www.tkk7.com/hitlang/articles/71857.html</guid><wfw:comment>http://www.tkk7.com/hitlang/comments/71857.html</wfw:comment><comments>http://www.tkk7.com/hitlang/articles/71857.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/hitlang/comments/commentRss/71857.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/hitlang/services/trackbacks/71857.html</trackback:ping><description><![CDATA[ <p>2004-9-7聽聽聽聽 鏄熸湡浜屄犅犅?闃?/p> <p>PL/SQL鏁版嵁搴撶紪紼?涓?</p> <p>絎竴绔?/p> <p>1. Oracle搴旂敤緙栬緫鏂規硶姒傝<br />絳旓細1) Pro*C/C++/... : C璇█鍜屾暟鎹簱鎵撲氦閬撶殑鏂規硶錛屾瘮OCI鏇村父鐢?<br />聽聽聽 2) ODBC<br />聽聽聽 3) OCI: C璇█鍜屾暟鎹簱鎵撲氦閬撶殑鏂規硶錛屽拰ProC寰堢浉浼鹼紝鏇村簳灞傦紝寰堝皯鐢?<br />聽聽聽 4) SQLJ: 寰堟柊鐨勪竴縐嶇敤Java璁塊棶Oracle鏁版嵁搴撶殑鏂規硶錛屼細鐨勪漢涓嶅;<br />聽聽聽 5) JDBC<br />聽聽聽 6) PL/SQL: 瀛樺偍鍦ㄦ暟鎹唴榪愯, 鍏朵粬鏂規硶涓哄湪鏁版嵁搴撳瀵規暟鎹簱璁塊棶;</p> <p>2. PL/SQL<br />絳旓細1) PL/SQL(Procedual language/SQL)鏄湪鏍囧噯SQL鐨勫熀紜涓婂鍔犱簡榪囩▼鍖栧鐞嗙殑璇█;<br />聽聽聽 2) Oracle瀹㈡埛绔伐鍏瘋闂甇racle鏈嶅姟鍣ㄧ殑鎿嶄綔璇█;<br />聽聽聽 3) Oracle瀵筍QL鐨勬墿鍏?</p> <p>4. PL/SQL鐨勪紭緙虹偣<br />絳旓細浼樼偣錛?br />聽聽聽 1) 緇撴瀯鍖栨ā鍧楀寲緙栫▼錛屼笉鏄潰鍚戝璞?<br />聽聽聽 2) 鑹ソ鐨勫彲縐繪鎬?涓嶇Oracle榪愯鍦ㄤ綍縐嶆搷浣滅郴緇?;<br />聽聽聽 3) 鑹ソ鐨勫彲緇存姢鎬?緙栬瘧閫氳繃鍚庡瓨鍌ㄥ湪鏁版嵁搴撻噷);<br />聽聽聽 4) 鎻愬崌緋葷粺鎬ц兘;</p> <p>聽聽聽 緙虹偣<br />聽聽聽 1) 涓嶄究浜庡悜寮傛瀯鏁版嵁搴撶Щ妞嶅簲鐢ㄧ▼搴?鍙兘鐢ㄤ簬Oracle);</p> <p>5. SQL涓嶱L/SQL鐨勫尯鍒?br />絳旓細SQL錛?) 絎洓浠h璦(鏅鴻兘璇█);<br />聽聽聽聽聽聽聽聽 2) 鍋氫粈涔堬紝涓嶇鎬庝箞鍋?<br />聽聽聽聽聽聽聽聽 3) 緙哄皯榪囩▼涓庢帶鍒惰鍙?<br />聽聽聽聽聽聽聽聽 4) 鏃犵畻娉?br />聽聽聽 PL/SQL: 1) 鎵╁睍鍙橀噺鍜岀被鍨?<br />聽聽聽聽聽聽聽聽聽聽聽 2) 鎵╁睍鎺у埗緇撴瀯;<br />聽聽聽聽聽聽聽聽聽聽聽 3) 鎵╁睍榪囩▼涓庡嚱鏁?<br />聽聽聽聽聽聽聽聽聽聽聽 4) 鎵╁睍瀵硅薄綾誨瀷涓庢柟娉?br />聽聽聽聽聽聽聽聽聽聽聽聽 </p> <p>絎簩绔?/p> <p>PL/SQL紼嬪簭緇撴瀯</p> <p>1. PL/SQL鍧?br />絳旓細1) 鐢蟲槑閮ㄥ垎, DECLARE(涓嶅彲灝?;<br />聽聽聽 2) 鎵ц閮ㄥ垎, BEGIN...END;<br />聽聽聽 3) 寮傚父澶勭悊錛孍XCEPTION(鍙互娌℃湁);</p> <p>2. PL/SQL寮鍙戠幆澧?br />絳旓細鍙互榪愮敤浠諱綍綰枃鏈殑緙栬緫鍣ㄧ紪杈戯紝渚嬪錛歏I</p> <p>3. PL/SQL瀛楃闆?br />絳旓細PL/SQL瀵瑰ぇ灝忓啓涓嶆晱鎰?/p> <p>4. 鏍囪瘑絎﹀懡鍚嶈鍒?br />絳旓細1) 瀛楁瘝寮澶?<br />聽聽聽 2) 鍚庤窡浠繪剰鐨勯潪絀烘牸瀛楃銆佹暟瀛椼佽揣甯佺鍙楓佷笅鍒掔嚎銆佹垨# ;<br />聽聽聽 3) 鏈澶ч暱搴︿負30涓瓧絎?鍏釜瀛楃宸﹀彸鏈鍚堥?;</p> <p>5. 鍙橀噺澹版槑<br />絳旓細璇硶<br />聽聽聽 Var_name type [CONSTANT][NOT NULL][:=value];<br />聽聽聽 娉細1) 鐢蟲槑鏃跺彲浠ユ湁榛樿鍊間篃鍙互娌℃湁;<br />聽聽聽聽聽聽聽 2) 濡傛湁[CONSTANT][NOT NULL], 鍙橀噺涓瀹氳鏈変竴涓垵濮嬪?<br />聽聽聽聽聽聽聽 3) 璧嬪艱鍙ヤ負鈥?=鈥?<br />聽聽聽聽聽聽聽 4) 鍙橀噺鍙互璁や負鏄暟鎹簱閲屼竴涓瓧孌?<br />聽聽聽聽聽聽聽 5) 瑙勫畾娌℃湁鍒濆鍖栫殑鍙橀噺涓篘ULL;</p> <p>絎笁绔?/p> <p>1. 鏁版嵁綾誨瀷<br />絳旓細1) 鏍囬噺鍨嬶細鏁板瓧鍨嬨佸瓧絎﹀瀷銆佸竷灝斿瀷銆佹棩鏈熷瀷;<br />聽聽聽 2) 緇勫悎鍨嬶細RECORD(甯哥敤)銆乀ABLE(甯哥敤)銆乂ARRAY(杈冨皯鐢?<br />聽聽聽 3) 鍙傝冨瀷錛歊EF CURSOR(娓告爣)銆丷EF object_type<br />聽聽聽 4) LOB(Large Object)</p> <p>2. %TYPE<br />絳旓細鍙橀噺鍏鋒湁涓庢暟鎹簱鐨勮〃涓煇涓瀛楁鐩稿悓鐨勭被鍨?br />聽聽聽 渚嬶細v_FirstName studengts.first_name%TYPE;</p> <p>3. RECORD綾誨瀷<br />絳旓細TYPE record_name IS RECORD(聽聽聽聽聽聽聽聽聽聽聽 /*鍏朵腑TYPE錛孖S錛孯ECORD涓哄叧閿瓧錛宺ecord_name涓哄彉閲忓悕縐?/<br />聽field1 type [NOT NULL][:=expr1],聽聽 /*姣忎釜絳変環鐨勬垚鍛橀棿鐢ㄩ楀彿鍒嗛殧*/<br />聽field2 type [NOT NULL][:=expr2],聽聽 /*濡傛灉涓涓瓧孌甸檺瀹歂OT NULL錛岄偅涔堝畠蹇呴』鎷ユ湁涓涓垵濮嬪?/<br />聽聽聽聽聽聽聽 ...聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /*鎵鏈夋病鏈夊垵濮嬪寲鐨勫瓧孌甸兘浼氬垵濮嬩負NULL<br />聽fieldn type [NOT NULL][:=exprn]);</p> <p>4. %ROWTYPE<br />絳旓細榪斿洖涓涓熀浜庢暟鎹簱瀹氫箟鐨勭被鍨?br />聽聽聽 DECLARE<br />聽聽聽聽聽 v_StuRec Student%ROWTYPE;聽聽聽聽聽聽聽聽聽聽聽 /*Student涓鴻〃鐨勫悕瀛?/</p> <p>聽聽聽 娉細涓?涓畾涓涓猺ecord鐩告瘮錛屼竴姝ュ氨瀹屾垚錛岃?涓畾涔夊垎浜屾錛歛. 鎵鏈夌殑鎴愬憳鍙橀噺閮借鐢蟲槑; b. 瀹炰緥鍖栧彉閲?</p> <p>5. TABLE綾誨瀷<br />絳旓細TYPE tabletype IS TABLE OF type INDEX BY BINARY_INTEGER;<br />聽聽聽 渚嬶細DECLARE<br />聽聽聽聽聽聽聽聽聽 TYPE t_StuTable IS TABLE OF Student%ROWTYPE INDEX BY BINARY_INTERGER;<br />聽聽聽聽聽聽聽聽聽 v_Student t_StuTable;<br />聽BEGIN<br />聽聽聽聽聽聽聽聽聽 SELECT * INTO v_Student(100) FROM Student WHERE id = 1001;<br />聽聽聽聽聽聽聽 END;<br />聽聽聽 娉細1) 琛岀殑鏁扮洰鐨勯檺鍒剁敱BINARY_INTEGER鐨勮寖鍥村喅瀹?</p> <p>6. 鍙橀噺鐨勪綔鐢ㄥ煙鍜屽彲瑙佹?br />絳旓細1) 鎵ц鍧楅噷鍙互宓屽叆鎵ц鍧?<br />聽聽聽 2) 閲屽眰鎵ц鍧楃殑鍙橀噺瀵瑰灞備笉鍙;<br />聽聽聽 3) 閲屽眰鎵ц鍧楀澶栧眰鎵ц鍧楀彉閲忕殑淇敼浼氬獎鍝嶅灞傚潡鍙橀噺鐨勫?</p> <p>絎洓绔?/p> <p>1. 鏉′歡璇彞<br />絳旓細IF boolean_expression1 THEN<br />聽聽聽 ...<br />聽聽聽 ELSIF boolean_expression2 THEN聽聽 /*娉ㄦ剰鏄疎LSIF錛岃屼笉鏄疎LSEIF*/<br />聽聽聽 ...聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /*ELSE璇彞涓嶆槸蹇呴』鐨勶紝浣咵ND IF;鏄繀欏葷殑*/<br />聽聽聽 ELSE<br />聽聽聽 ...<br />聽聽聽 END IF;</p> <p>2. 寰幆璇彞<br />絳旓細1) Loop<br />聽聽聽聽聽聽 ...<br />聽聽聽聽聽聽聽聽 IF boolean_expr THEN聽聽聽聽聽聽聽 /* */<br />聽聽聽聽聽聽聽聽聽聽聽 EXIT;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /* EXIT WHEN boolean_expr */<br />聽聽聽聽聽聽聽聽 END IF;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /* */<br />聽聽聽聽聽聽 END LOOP;<br />聽聽聽 2) WHILE boolean_expr LOOP<br />聽聽聽聽聽聽 ...<br />聽聽聽聽聽聽 END LOOP;<br />聽聽聽 3) FOR loop_counter IN [REVERSE] low_blound..high_bound LOOP<br />聽聽聽聽聽聽 ...<br />聽聽聽聽聽聽 END LOOP;<br />聽聽聽聽聽聽 娉細a. 鍔犱笂REVERSE 琛ㄧず閫掑噺錛屼粠緇撴潫杈圭晫鍒拌搗濮嬭竟鐣岋紝閫掑噺姝ラ暱涓轟竴;<br />聽聽聽聽聽聽聽聽聽聽 b. low_blound聽 璧峰杈圭晫; high_bound聽 緇撴潫杈圭晫;</p> <p>3. GOTO璇彞<br />絳旓細GOTO label_name;<br />聽聽聽 1) 鍙兘鐢卞唴閮ㄥ潡璺沖線澶栭儴鍧?<br />聽聽聽 2) 璁劇疆鏍囩錛?lt;<label_name>><br />聽聽聽 3) 紺轟緥錛?br />聽聽聽聽聽聽 LOOP<br />聽聽聽聽聽聽 ...<br />聽聽聽聽聽聽聽聽 IF D%ROWCOUNT = 50 THEN<br />聽聽聽聽聽聽聽聽聽聽聽 GOTO l_close;<br />聽聽聽聽聽聽聽聽 END IF;<br />聽聽聽聽聽聽 ...<br />聽聽聽聽聽聽 END LOOP;<br />聽聽聽聽聽聽 <<l_close>>;<br />聽聽聽聽聽聽 ...</p> <p>4. NULL璇彞<br />絳旓細鍦ㄨ鍙ュ潡涓姞絀鴻鍙ワ紝鐢ㄤ簬琛ュ厖璇彞鐨勫畬鏁存с傜ず渚嬶細<br />聽聽聽 IF boolean_expr THEN<br />聽聽聽 ...<br />聽聽聽 ELSE<br />聽聽聽聽聽 NULL;<br />聽聽聽 END IF;</p> <p>5. SQL in PL/SQL<br />絳旓細1) 鍙湁DML SQL鍙互鐩存帴鍦≒L/SQL涓嬌鐢?</p> <p>絎簲绔?/p> <p>1. 娓告爣(CURSOR)<br />絳旓細1) 浣滅敤錛氱敤浜庢彁鍙栧琛屾暟鎹泦;<br />聽聽聽 2) 澹版槑錛歛. 鏅氱敵鏄庯細DELCARE CURSOR CURSOR_NAME IS select_statement聽 /* CURSOR鐨勫唴瀹瑰繀欏繪槸涓鏉℃煡璇㈣鍙?/<br />聽聽聽聽聽聽聽聽聽聽聽聽 b. 甯﹀弬鏁扮敵鏄庯細DELCARE CURSOR c_stu(p_id student.ID%TYPE) SELECT * FROM student WHERE ID = p_id;<br />聽聽聽 3) 鎵撳紑娓告爣錛歄PEN Cursor_name;聽聽 /*鐩稿綋浜庢墽琛宻elect璇彞錛屼笖鎶婃墽琛岀粨鏋滃瓨鍏URSOR;<br />聽聽聽 4) 浠庢父鏍囦腑鍙栨暟錛歛. FETCH cursor_name INTO var1, var2, ...; /*鍙橀噺鐨勬暟閲忋佺被鍨嬨侀『搴忚鍜孴able涓瓧孌典竴鑷?*/<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 b. FETCH cursor_name INTO record_var;<br />聽聽聽聽聽聽 娉細灝嗗間粠CURSOR鍙栧嚭鏀懼叆鍙橀噺涓紝姣廎ETCH涓嬈″彇涓鏉¤褰?<br />聽聽聽 5) 鍏抽棴娓告爣: CLOSE Cursor_name;<br />聽聽聽聽聽聽 娉細a. 娓告爣浣跨敤鍚庡簲璇ュ叧闂?<br />聽聽聽聽聽聽聽聽聽聽 b. 鍏抽棴鍚庣殑娓告爣涓嶈兘FETCH鍜屽啀嬈LOSE;<br />聽聽聽聽聽聽聽聽聽聽 c. 鍏抽棴娓告爣鐩稿綋浜庡皢鍐呭瓨涓瑿URSOR鐨勫唴瀹規竻絀?</p> <p>2. 娓告爣鐨勫睘鎬?br />絳旓細1) %FOUND:聽聽聽 鏄惁鏈夊?<br />聽聽聽 2) %NOTFOUND: 鏄惁娌℃湁鍊?<br />聽聽聽 3) %ISOPEN:聽聽 鏄惁鏄墦寮鐘舵?<br />聽聽聽 4) %ROWCOUNT: CURSOR褰撳墠鐨勮褰曞彿;</p> <p>3. 娓告爣鐨凢ETCH寰幆<br />絳旓細1) LOOP<br />聽聽聽聽聽聽聽聽 FETCH cursor INTO ...<br />聽聽聽聽聽聽聽聽 EXIT WHEN cursor%NOTFOUND;聽聽 /*褰揷ursor涓病璁板綍鍚庨鍑?/<br />聽聽聽聽聽聽 END LOOP;<br />聽聽聽 2) WHILE cursor%FOUND LOOP<br />聽聽聽聽聽聽聽聽 FETCH cursor INTO ...<br />聽聽聽聽聽聽 END LOOP;<br />聽聽聽 3) FOR var IN cursor LOOP<br />聽聽聽聽聽聽聽聽 FETCH cursor INTO...<br />聽聽聽聽聽聽 END LOOP;<br />聽聽聽聽聽聽 <br />絎叚绔?/p> <p>1. 寮傚父<br />絳旓細DECLARE<br />聽聽聽聽聽 ...<br />聽聽聽聽聽 e_TooManyStudents EXCEPTION;聽 /* 鐢蟲槑寮傚父 */<br />聽聽聽聽聽 ...<br />聽聽聽 BEGIN<br />聽聽聽聽聽 ...<br />聽聽聽聽聽 RAISE e_TooManyStudents;聽聽聽聽聽 /* 瑙﹀彂寮傚父 */<br />聽聽聽聽聽 ...<br />聽聽聽 EXCEPTION<br />聽聽聽聽聽 WHEN e_TooManyStudents THEN聽聽 /* 瑙﹀彂寮傚父 */<br />聽聽聽聽聽 ...<br />聽聽聽聽聽 WHEN OTHERS THEN聽聽聽聽聽聽聽聽聽聽聽聽聽 /* 澶勭悊鎵鏈夊叾浠栧紓甯?*/<br />聽聽聽聽聽 ...<br />聽聽聽 END;</p> <p>2004-9-8聽聽聽聽 鏄熸湡涓壜犅犅?闃?/p> <p>PL/SQL鏁版嵁搴撶紪紼?涓?</p> <p>1. 瀛樺偍榪囩▼(PROCEDURE)<br />絳旓細鍒涘緩榪囩▼錛?br />聽聽聽 CREATE [OR REPLACE] PROCEDURE proc_name<br />聽聽聽聽聽聽聽聽 [(arg_name[{IN|OUT|IN OUT}]TYPE,<br />聽聽聽聽聽聽聽聽聽聽 arg_name[{IN|OUT|IN OUT}]TYPE)]<br />聽聽聽聽聽聽聽聽聽 {IS|AS}<br />聽聽聽 procedure_body<br />聽聽聽 1) IN: 琛ㄧず璇ュ弬鏁頒笉鑳借璧嬪?鍙兘浣嶄簬絳夊彿鍙寵竟);<br />聽聽聽 2) OUT:琛ㄧず璇ュ弬鏁板彧鑳借璧嬪?鍙兘浣嶄簬絳夊彿宸﹁竟);<br />聽聽聽 3) IN OUT: 琛ㄧず璇ョ被鍨嬫棦鑳借璧嬪間篃鑳戒紶鍊?</p> <p>2. 瀛樺偍榪囩▼渚嬪瓙<br />絳旓細CREATE OR REPLACE PROCEDURE ModeTest(<br />聽聽聽聽聽聽聽 p_InParm IN NUMBER,<br />聽聽聽聽聽聽聽 p_OutParm OUT NUMBER,<br />聽聽聽聽聽聽聽 p_InOutParm IN OUT NUMBER)<br />聽聽聽 IS<br />聽聽聽聽聽聽聽 v_LocalVar NUMBER;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /* 澹版槑閮ㄥ垎 */<br />聽聽聽 BEGIN<br />聽聽聽聽聽聽聽 v_LocalVar:=p_InParm;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /* 鎵ц閮ㄥ垎 */<br />聽聽聽聽聽聽聽 p_OutParm:=7;<br />聽聽聽聽聽聽聽 p_InOutParm:=7;<br />聽聽聽聽聽聽聽 ...<br />聽聽聽 EXCEPTION<br />聽聽聽聽聽聽聽 ...聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /* 寮傚父澶勭悊閮ㄥ垎 */<br />聽聽聽 END ModeTest;<br />聽聽聽 <br />3. 璋冪敤PROCEDURE鐨勪緥瀛?br />絳旓細1) 鍖垮悕鍧楀彲浠ヨ皟;<br />聽聽聽 2) 鍏朵粬PROCDEURE鍙互璋冪敤;<br />聽聽聽 渚嬶細<br />聽聽聽 DECLARE<br />聽聽聽聽聽聽聽 v_var1 NUMBER;<br />聽聽聽 BEGIN<br />聽聽聽聽聽聽聽 ModeTest(12, v_var1, 10);<br />聽聽聽 END;<br />聽聽聽 娉細姝ゆ椂v_var1絳変簬7</p> <p>4. 鎸囧畾瀹炲弬鐨勬ā寮?br />絳旓細1) 浣嶇疆鏍囩ず娉曪細璋冪敤鏃舵坊鍏ユ墍鏈夊弬鏁幫紝瀹炲弬涓庡艦鍙傛寜欏哄簭涓涓瀵瑰簲;<br />聽聽聽 2) 鍚嶅瓧鏍囩ず娉曪細璋冪敤鏃剁粰鍑哄艦鍙傚悕瀛楋紝騫剁粰鍑哄疄鍙?br />聽聽聽聽聽聽 ModeTest(p_InParm=>12, p_OutParm=>v_var1, p_Inout=>10);<br />聽聽聽 娉細a. 涓ょ鏂規硶鍙互娣風敤;<br />聽聽聽聽聽聽聽 b. 娣風敤鏃剁涓涓弬鏁板繀欏婚氳繃浣嶇疆鏉ユ寚瀹氥?/p> <p>5. 鍑芥暟(Function)涓庤繃紼?Procedure)鐨勫尯鍒?br />絳旓細1) 榪囩▼璋冪敤鏈韓鏄竴涓狿L/SQL璇彞(鍙互鍦ㄥ懡浠よ涓氳繃exec璇彞鐩存帴璋冪敤); <br />聽聽聽 2) 鍑芥暟璋冪敤鏄〃杈懼紡鐨勪竴閮ㄥ垎;</p> <p>6. 鍑芥暟鐨勫0鏄?br />絳旓細CREATE [OR REPLACE] PROCEDURE proc_name<br />聽聽聽聽聽聽聽 [(arg_name[{IN|OUT|IN OUT}]TYPE,<br />聽聽聽聽聽聽聽聽聽 arg_name[{IN|OUT|IN OUT}]TYPE)]<br />聽聽聽 RETURN TYPE<br />聽聽聽 {IS|AS}<br />聽聽聽 procedure_body<br />聽聽聽 娉細1) 娌℃湁榪斿洖璇彞鐨勫嚱鏁板皢鏄竴涓敊璇?</p> <p>7. 鍒犻櫎榪囩▼涓庡嚱鏁?br />絳旓細DROP PROCEDURE proc_name;<br />聽聽聽 DROP FUNCTION func_name;</p> <p>絎叓绔?/p> <p>1. 鍖?br />絳旓細1) 鍖呮槸鍙互灝嗙浉鍏沖璞″瓨鍌ㄥ湪涓璧風殑PL/SQL鐨勭粨鏋?<br />聽聽聽 2) 鍖呭彧鑳藉瓨鍌ㄥ湪鏁版嵁搴撲腑錛屼笉鑳芥槸鏈湴鐨?<br />聽聽聽 3) 鍖呮槸涓涓甫鏈夊悕瀛楃殑澹版槑;<br />聽聽聽 4) 鐩稿綋浜庝竴涓狿L/SQL鍧楃殑澹版槑閮ㄥ垎;<br />聽聽聽 5) 鍦ㄥ潡鐨勫0鏄庨儴鍒嗗嚭鐜扮殑浠諱綍涓滆タ閮借兘鍑虹幇鍦ㄥ寘涓?<br />聽聽聽 6) 鍖呬腑鍙互鍖呭惈榪囩▼銆佸嚱鏁般佹父鏍囦笌鍙橀噺;<br />聽聽聽 7) 鍙互浠庡叾浠朠L/SQL鍧椾腑寮曠敤鍖咃紝鍖呮彁渚涗簡鍙敤浜嶱L/SQL鐨勫叏灞鍙橀噺銆?br />聽聽聽 8) 鍖呮湁鍖呭ご鍜屽寘涓諱綋錛屽鍖呭ご涓病鏈変換浣曞嚱鏁頒笌榪囩▼錛屽垯鍖呬富浣撳彲浠ヤ笉闇瑕併?/p> <p>2. 鍖呭ご<br />絳旓細1) 鍖呭ご鍖呭惈浜嗘湁鍏沖寘鐨勫唴瀹圭殑淇℃伅錛屽寘澶翠笉鍚換浣曡繃紼嬬殑浠g爜銆?br />聽聽聽 2) 璇硶錛?br />聽聽聽聽聽聽 CREATE [OR REPLACE] PACKAGE pack_name {IS|AS}<br />聽聽聽聽聽聽聽聽聽聽聽 procedure_specification|function_specification|variable_declaration|type_definition|exception_declaration|cursor_declaration<br />聽聽聽聽聽聽 END pack_name;<br />聽聽聽 3) 紺轟緥錛?br />聽聽聽聽聽聽 CREATE OR REPLACE PACKAGE pak_test AS<br />聽聽聽聽聽聽聽聽聽聽 PROCEDURE RemoveStudent(p_StuID IN students.id%TYPE);<br />聽聽聽聽聽聽聽聽聽聽 TYPE t_StuIDTable IS TABLE OF students.id%TYPE INDEX BY BINARY_INTEGER;<br />聽聽聽聽聽聽 END pak_test;</p> <p>3. 鍖呬富浣?br />絳旓細1) 鍖呬富浣撴槸鍙夌殑錛屽鍖呭ご涓病鏈変換浣曞嚱鏁頒笌榪囩▼錛屽垯鍖呬富浣撳彲浠ヤ笉闇瑕併?br />聽聽聽 2) 鍖呬富浣撲笌鍖呭ご瀛樻斁鍦ㄤ笉鍚岀殑鏁版嵁瀛楀吀涓?br />聽聽聽 3) 濡傚寘澶寸紪璇戜笉鎴愬姛錛屽寘涓諱綋鏃犳硶姝g‘緙栬瘧銆?br />聽聽聽 4) 鍖呬富浣撳寘鍚簡鎵鏈夊湪鍖呭ご涓0鏄庣殑鎵鏈夎繃紼嬩笌鍑芥暟鐨勪唬鐮併?br />聽聽聽 5) 紺轟緥錛?br />聽聽聽聽聽聽 CREATE OR REPLACE PACKAGE BODY pak_test AS<br />聽聽聽聽聽聽聽聽聽聽 PROCEDURE RemoveStudent(p_StuID IN students.id%TYPE) IS<br />聽聽聽聽聽聽聽聽聽聽 BEGIN<br />聽聽聽聽聽聽聽聽聽聽聽聽聽 ...<br />聽聽聽聽聽聽聽聽聽聽 END RemoveStudent;<br />聽聽聽聽聽聽聽聽聽聽 TYPE t_StuIDTable IS TABLE OF students.id%TYPE INDEX BY BINARY_INTEGER;<br />聽聽聽聽聽聽 END pak_test;</p> <p>4. 鍖呯殑浣滅敤鍩?br />絳旓細1) 鍦ㄥ寘澶栬皟鐢ㄥ寘涓繃紼?闇鍔犲寘鍚?錛歱ak_test.AddStudent(100010, 'CS', 101);<br />聽聽聽 2) 鍦ㄥ寘涓諱綋涓彲浠ョ洿鎺ヤ嬌鐢ㄥ寘澶翠腑澹版槑鐨勫璞″拰榪囩▼(涓嶉渶鍔犲寘鍚?;</p> <p>5. 鍖呬腑瀛愮▼搴忕殑閲嶈澆<br />絳旓細1) 鍚屼竴涓寘涓殑榪囩▼涓庡嚱鏁伴兘鍙互閲嶈澆;<br />聽聽聽 2) 鐩稿悓鐨勮繃紼嬫垨鍑芥暟鍚嶅瓧錛屼絾鍙傛暟涓嶅悓;</p> <p>6. 鍖呯殑鍒濆鍖?br />絳旓細1) 鍖呭瓨鏀懼湪鏁版嵁搴撲腑;<br />聽聽聽 2) 鍦ㄧ涓嬈¤璋冪敤鐨勬椂鍊欙紝鍖呬粠鏁版嵁搴撲腑璋冨叆鍐呭瓨騫惰鍒濆鍖?<br />聽聽聽 3) 鍖呬腑瀹氫箟鐨勬墍鏈夊彉閲忛兘琚垎閰嶅唴瀛?<br />聽聽聽 4) 姣忎釜浼氳瘽閮藉皢鎷ユ湁鑷繁鐨勫寘鍐呭彉閲忕殑鍓湰銆?/p> <p>絎節绔?/p> <p>1. 瑙﹀彂鍣?br />絳旓細1) 瑙﹀彂鍣ㄤ笌榪囩▼/鍑芥暟鐨勭浉鍚岀偣<br />聽聽聽聽聽聽 a. 閮芥槸甯︽湁鍚嶅瓧鐨勬墽琛屽潡;<br />聽聽聽聽聽聽 b. 閮芥湁澹版槑銆佹墽琛屼綋鍜屽紓甯擱儴鍒?<br />聽聽聽 2) 瑙﹀彂鍣ㄤ笌榪囩▼/鍑芥暟鐨勪笉鍚岀偣<br />聽聽聽聽聽聽 a. 瑙﹀彂鍣ㄥ繀欏誨瓨鍌ㄥ湪鏁版嵁搴撲腑;<br />聽聽聽聽聽聽 b. 瑙﹀彂鍣ㄨ嚜鍔ㄦ墽琛?</p> <p>2. 鍒涘緩瑙﹀彂鍣?br />絳旓細1) 璇硶錛?br />聽聽聽聽聽聽 CREATE [OR REPLACE] TRIGGER trigger_name<br />聽聽聽聽聽聽 {BEFORE|AFTER} triggering_event ON table_reference<br />聽聽聽聽聽聽 [FOR EACH ROW [WHEN trigger_condition]]<br />聽聽聽聽聽聽 trigger_body;<br />聽聽聽 2) 鑼冧緥錛?br />聽聽聽聽聽聽 CREATE OR REPLACE TRIGGER UpdateMajorStats AFTER INSERT OR DELETE OR UPDATE ON students<br />聽聽聽聽聽聽 DECLARE<br />聽聽聽聽聽聽聽聽聽聽 CURSOR c_Statistics IS<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽 SELECT * FROM students GROUP BY major;<br />聽聽聽聽聽聽 BEGIN<br />聽聽聽聽聽聽聽聽聽聽 ...<br />聽聽聽聽聽聽 END Up;</p> <p>3. 瑙﹀彂鍣?br />絳旓細1) 涓変釜璇彞(INSERT/UPDATE/DELETE);<br />聽聽聽 2) 浜岀綾誨瀷(涔嬪墠/涔嬪悗);<br />聽聽聽 3) 浜岀綰у埆(row-level/statement-level);<br />聽聽聽 鎵浠ヤ竴鍏辨湁 3 X 2 X 2 = 12</p> <p>4. 瑙﹀彂鍣ㄧ殑闄愬埗<br />絳旓細1) 涓嶅簲璇ヤ嬌鐢ㄤ簨鍔℃帶鍒惰鍙?<br />聽聽聽 2) 涓嶈兘澹版槑浠諱綍LONG鎴朙ONG RAW鍙橀噺;<br />聽聽聽 3) 鍙互璁塊棶鐨勮〃鏈夐檺銆?/p> <p>5. 瑙﹀彂鍣ㄧ殑涓諱綋鍙互璁塊棶鐨勮〃<br />絳旓細1) 涓嶅彲浠ヨ鍙栨垨淇敼浠諱綍鍙樺寲琛?琚獶ML璇彞姝e湪淇敼鐨勮〃);<br />聽聽聽 2) 涓嶅彲浠ヨ鍙栨垨淇敼闄愬埗琛?甯︽湁綰︽潫鐨勮〃)鐨勪富閿佸敮涓鍊箋佸閿垪銆?/p> <p> <br />聽聽聽 </p> <p>聽聽聽聽聽聽 </p> <p>聽</p> <p>聽</p> <img src ="http://www.tkk7.com/hitlang/aggbug/71857.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/hitlang/" target="_blank">liulang</a> 2006-09-25 23:18 <a href="http://www.tkk7.com/hitlang/articles/71857.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> 主站蜘蛛池模板: <a href="http://8568008.com" target="_blank">国产精品免费看久久久香蕉 </a>| <a href="http://moushengguigz.com" target="_blank">美女视频黄免费亚洲</a>| <a href="http://manghuo365.com" target="_blank">精品一卡2卡三卡4卡免费视频</a>| <a href="http://116603a.com" target="_blank">亚洲性日韩精品一区二区三区</a>| <a href="http://biarn.com" target="_blank">亚洲国产免费综合</a>| <a href="http://664403.com" target="_blank">亚洲精品国产va在线观看蜜芽</a>| <a href="http://njchxf.com" target="_blank">杨幂最新免费特级毛片</a>| <a href="http://saozib.com" target="_blank">亚洲日韩中文在线精品第一</a>| <a href="http://baizhengsh.com" target="_blank">一级人做人爰a全过程免费视频</a>| <a href="http://7766qq.com" target="_blank">亚洲成av人片在线观看天堂无码 </a>| <a href="http://wwwvv99.com" target="_blank">亚洲av无码专区国产不乱码</a>| <a href="http://www9797nn.com" target="_blank">啦啦啦中文在线观看电视剧免费版</a>| <a href="http://56p6.com" target="_blank">亚洲熟妇无码AV</a>| <a href="http://xxzyyj.com" target="_blank">国产小视频在线观看免费</a>| <a href="http://sznsfe.com" target="_blank">日韩精品无码免费视频</a>| <a href="http://jiucaoji.com" target="_blank">亚洲日本va中文字幕久久</a>| <a href="http://sxhengshan.com" target="_blank">国产午夜精品久久久久免费视</a>| <a href="http://hwjyrck.com" target="_blank">337p欧洲亚洲大胆艺术</a>| <a href="http://www988555.com" target="_blank">免费A级毛片无码无遮挡内射</a>| <a href="http://gzmsijz.com" target="_blank">亚洲精华液一二三产区</a>| <a href="http://bd0574.com" target="_blank">亚洲国产精品综合久久网络</a>| <a href="http://grjeans.com" target="_blank">a级成人免费毛片完整版</a>| <a href="http://hairdehf.com" target="_blank">精品日韩亚洲AV无码一区二区三区 </a>| <a href="http://kssijia.com" target="_blank">亚洲精品偷拍视频免费观看</a>| <a href="http://3344088.com" target="_blank">成人免费无码H在线观看不卡</a>| <a href="http://445848.com" target="_blank">亚洲人成亚洲精品</a>| <a href="http://www6yg6yg.com" target="_blank">国语成本人片免费av无码</a>| <a href="http://www-887234.com" target="_blank">亚洲精品国产高清在线观看</a>| <a href="http://31xyz.com" target="_blank">亚洲人成网站色在线入口</a>| <a href="http://sswg2.com" target="_blank">久久黄色免费网站</a>| <a href="http://gg596gg.com" target="_blank">亚洲国产精品无码久久久秋霞1</a>| <a href="http://singbomb.com" target="_blank">亚洲精品成人区在线观看</a>| <a href="http://8222se.com" target="_blank">四虎影视在线影院在线观看免费视频 </a>| <a href="http://whlnrsqsie.com" target="_blank">在线人成免费视频69国产</a>| <a href="http://8833081.com" target="_blank">亚洲乱码中文论理电影</a>| <a href="http://liuxilife.com" target="_blank">免费看国产一级片</a>| <a href="http://jiajuco.com" target="_blank">99久久精品国产免费</a>| <a href="http://28896543.com" target="_blank">日韩色视频一区二区三区亚洲</a>| <a href="http://senimei9.com" target="_blank">久久亚洲精品国产精品黑人</a>| <a href="http://55118885.com" target="_blank">免费看少妇作爱视频</a>| <a href="http://wogool.com" target="_blank">午夜免费福利视频</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>