ORACLE11gÊÔÌâ´ð°¸£¨³Â¶¬ÁÁ£© ÏÂÔر¾ÎÄ

BEGIN ----

value1 £º= airline.book_ticket(¡®10¡¯); ¶þ¡¢Ìî¿ÕÌâ

1. ´æ´¢¹ý³Ì ÊÇ´æ´¢ÔÚ·þÎñÆ÷ÉϵÄÒ»×éÔ¤±àÒëµÄTranscat-SQLÓï¾ä¡£ 2.ÓÉÓÚ´æ´¢¹ý³Ìÿ´ÎÖ´ÐÐʱ ·ñ (ÊÇ£¬·ñ)¶¼Òª¼ì²éÓÐÓï·¨´íÎó

3£®³ÌÐò°ü°üÀ¨Á½¸ö×é³É²¿·Ö£¬¼´ °üÍ· ºÍ °üÌå ¡£Ç°Õß°üº¬Á˸óÌÐò°üµÄÐÅÏ¢¡¢¹ý³ÌºÍº¯ÊýÁÐ±í£¬ºóÕß°üº¬Êµ¼ÊµÄ´úÂë¡£

4£®Èç¹ûÏ£Íû²é¿´¹ý³ÌµÄÓйØÐÅÏ¢£¬ÄÇô¿ÉÒÔʹÓà USER_SOURCE Êý¾Ý×ÖµäÊÓͼ¡£

5£®´´½¨ºÍÌæ»»´æ´¢¹ý³ÌµÄÓï¾äÊÇ CREATE OR REPLACE PROCEDURE £¬É¾³ý´æ´¢¹ý³ÌµÄÓï¾äÊÇ DROP PROCEDURE £¬´´½¨ºÍÌæ»»º¯ÊýµÄÓï¾äÊÇ CREATE OR REPLACE FUNCTION £¬É¾³ýº¯ÊýµÄÓï¾äÊÇ DROP FUNCTION ¡£ 6£®ÔÚÏÂÃæ³ÌÐòµÄ¿Õ°×´¦Ìîдһ¶¨µÄ´úÂ룬ʹ¸Ãº¯ÊýÊä³ö0-100µÄÖµ clear;

create or replace procedure mydel(in_a in integer) as

a integer; begin a:=0;

while a<100 loop

dbms_output.put_line(a) ; a:=a+1; end loop; end;

7£®ÔÚÏÂÃæ³ÌÐòµÄ¿Õ°×´¦Ìîдһ¶¨µÄ´úÂ룬ʹ¸Ãº¯Êý¿ÉÒÔ»ñÈ¡Ö¸¶¨±àºÅµÄÉÌÆ·¼Û¸ñ¡£ CREATE O REPLACE FUNCTION get_price (pid varchar2)

RETURN NUMBER IS V_price NUMBER BEGIN

SELECT µ¥¼Û

INTO V_price

FROM ÉÌÆ·ÐÅÏ¢ WHERE ÉÌÆ·±àºÅ= pid £» RETURN v_price EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE(?²éÕÒµÄÉÌÆ·²»´æÔÚ!?); WHEN TOO_MANY_ROWS THEN

DBMS_OUTPUT.PUT_LINE(?³ÌÐòÔËÐдíÎó!ÇëʹÓÃÓαê?);

45

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE(?·¢ÉúÆäËû´íÎó!?); END get_price; Èý¡¢ÎÊ´ðÌâ

£±£®Ê²Ã´ÊÇ´æ´¢¹ý³Ì£¬ÎªÊ²Ã´ÒªÊ¹Óô洢¹ý³Ì? ½â£º

´æ´¢¹ý³Ì£¨Stored Procedure£©ÊÇÔÚ´óÐÍÊý¾Ý¿âϵͳÖУ¬Ò»×éΪÁËÍê³ÉÌض¨¹¦ÄܵÄSQL Óï¾ä¼¯£¬¾­±àÒëºó´æ´¢ÔÚÊý¾Ý¿âÖУ¬Óû§Í¨¹ýÖ¸¶¨´æ´¢¹ý³ÌµÄÃû×Ö²¢¸ø³ö²ÎÊý£¨Èç¹û¸Ã´æ´¢¹ý³Ì´øÓвÎÊý£©À´Ö´ÐÐËü¡£

£¨1£©´æ´¢¹ý³ÌÖ»ÔÚ´´Ôìʱ½øÐбàÒ룬ÒÔºóÿ´ÎÖ´Ðд洢¹ý³Ì¶¼²»ÐèÔÙÖØбàÒ룬¶øÒ»°ã SQL Óï¾äÿִÐÐÒ»´Î¾Í±àÒëÒ»´Î,ËùÒÔʹÓô洢¹ý³Ì¿ÉÌá¸ßÊý¾Ý¿âÖ´ÐÐËٶȡ£

£¨2£©µ±¶ÔÊý¾Ý¿â½øÐи´ÔÓ²Ù×÷ʱ(Èç¶Ô¶à¸ö±í½øÐÐ Update,Insert,Query,Delete ʱ£©£¬¿É½«´Ë¸´ÔÓ²Ù×÷Óô洢¹ý³Ì·â×°ÆðÀ´ÓëÊý¾Ý¿âÌṩµÄÊÂÎñ´¦Àí½áºÏÒ»ÆðʹÓá£ÕâЩ²Ù×÷£¬Èç¹ûÓóÌÐòÀ´Íê³É£¬¾Í±ä³ÉÁËÒ»ÌõÌõµÄ SQL Óï¾ä£¬¿ÉÄÜÒª¶à´ÎÁ¬½ÓÊý¾Ý¿â¡£¶ø»»³É´æ´¢£¬Ö»ÐèÒªÁ¬½ÓÒ»´ÎÊý¾Ý¿â¾Í¿ÉÒÔÁË¡£

£¨3£©´æ´¢¹ý³Ì¿ÉÒÔÖظ´Ê¹ÓÃ,¿É¼õÉÙÊý¾Ý¿â¿ª·¢ÈËÔ±µÄ¹¤×÷Á¿¡£

£¨4£©°²È«ÐÔ¸ß,¿ÉÉ趨ֻÓÐij´ËÓû§²Å¾ßÓжÔÖ¸¶¨´æ´¢¹ý³ÌµÄʹÓÃȨ¡£

2£®´´½¨´æ´¢¹ý³Ì£¬ÒªÇóÊäÈëÔ±¹¤ºÅ,Êä³ö¸ÃÔ±¹¤µÄ¹¤×Ê ×ÊÁÏ(±àºÅ¡¢ÐÕÃû¡¢¹¤×Ê¡¢¹¤×÷ËùÔÚµØ)¡£ ½â£º

CREATE OR REPLACE PROCEDURE PRO_NAME£¨ in_id IN VARCHAR2,

out_wage OUT VARCHAR2) AS BEGIN

SELECT¹¤×Êinto out_wage FROM×ÊÁÏWHERE±àºÅ=in_id; END PRO_NAME£»

3£®´´½¨Ò»¸ö´æ´¢¹ý³ÌP1£¬ÒªÇóÖ´ÐиĴ洢¹ý³ÌÄܹ»·µ»Ø¿¼ÉúÊý¾Ý±í(tblkaosheng) ÖÐbmdwdm£¨±¨Ãûµ¥Î»´úÂ룩Ϊ100,200,500µÄ¿¼ÉúµÄzkzh£¨×¼¿¼Ö¤ºÅ£©¡¢ £¨xm£©ÐÕÃûºÍkscj£¨¿¼ÊԳɼ¨£©½á¹û¼¯£¬²¢ÇҸýá¹û¼¯Òª°´ÕÕbmdwdm£¨±¨Ãûµ¥Î»´úÂ룩ºÍ×¼¿¼Ö¤ºÅÉýÐòÅÅÁÐ ½â£º

CREATE PROCEDURE p1 AS

select zkzh,xm,kscj from tblkaosheng

where bmdwdm in (100,200,500) order by bmdwdm asc, zkzh asc

46

4£®´´½¨Ò»¸ö´æ´¢¹ý³ÌP2£¬ÒªÇóÖ´ÐиĴ洢¹ý³ÌÄܹ»·µ»Ø¿¼ÉúÊý¾Ý±í(tblkaosheng)ÖÐËùÓС°³Â¡±ÐÕ¿¼ÉúµÄxm£¨ÐÕÃû£©¡¢lxdh£¨ÁªÏµµç»°£©½á¹û¼¯¡£ ½â£º

CREATE PROCEDURE p2 AS

select xm,lxdh from tblkaosheng where xm like '³Â%

5£®OracleÖÐÓÐÒÔϱíUser ×Ö¶ÎÃû ×Ö¶ÎÀàÐÍ Id int

Name Varchar2(20) password Varchar2(10)

ÇëÔÚOracleÖбàдһ¸öº¯ÊýgetUserByInterval£¬ÓвÎÊý(int start,int end)·Ö±ð±íʾҪ»ñÈ¡¼Ç¼µÄÆðʼºÍ½áÊøλÖ㬷µ»ØUser±íÖмǼÐòºÅ´Óstartµ½endµÄ½á¹û¼¯¡£(×¢:ÕâÀïµÄ¼Ç¼λÖÃÊÇÖ¸¸Ã¼Ç¼ÔÚ±íÖдæ·ÅµÄλÖ㬶ø²»ÊÇidºÅ)¡£ ½â£º

CREATE OR REPLACE PACKAGE \type mycursor is ref cursor; end;

CREATE OR REPLACE FUNCTION getUserByInterval (v_start integer,v_end integer) return mypackage.mycursor is

myresult mypackage.mycursor; begin

open myresult for

select * from (select rownum r,UserInfo.* from UserInfo where rownum <= v_end) t where t.r >= v_start; return myresult; end;

47

µÚÊ®¶þÕ ´¥·¢Æ÷

Ò»¡¢µ¥ÏîÑ¡ÔñÌâ

1£®´¥·¢Æ÷µÄÀàÐͲ»°üÀ¨µÄÊÇ£¨ B £©¡£

A.DML´¥·¢Æ÷ B.DDL´¥·¢Æ÷ C.Ìæ´ú´¥·¢Æ÷ D.ϵͳ´¥·¢Æ÷

2£®ÔÚSQLÓïÑÔÖУ¬Èç¹ûÒª½¨Á¢Ò»¸ö¹¤×Ê±í£¬°üº¬Ö°¹¤ºÅ¡¢ÐÕÃû¡¢Ö°³Æ¡¢¹¤×ʵÈ×ֶΡ£ÈôÒª±£Ö¤\¹¤×Ê\×ֶεÄÈ¡Öµ²»µÍÓÚ800Ôª£¬×îºÏÊʵÄʵÏÖ·½·¨ÊÇ£¨ C £© A£®ÔÚ´´½¨¹¤×ʱíʱΪ'\¹¤×Ê×ֶν¨Á¢È±Ê¡(default)

B£®ÔÚ´´½¨¹¤×ʱíʱΪ\¹¤×Ê\×ֶν¨Á¢¼ì²éÔ¼Êø(check constraint) C£®ÔÚ¹¤×ʱíÉϽ¨Á¢Ò»¸ö´¥·¢Æ÷(trigger) D£®Îª¹¤×ʱíÊý¾ÝÊäÈë±àдһ¸ö³ÌÐò½øÐпØÖÆ

3.Èç¹ûÏ£ÍûÖ´ÐÐij¸ö²Ù×÷ʱ£¬¸Ã²Ù×÷±¾Éí²»Ö´ÐУ¬¶øÊÇÈ¥Ö´ÐÐÁíÍâµÄijЩ²Ù×÷£¬ÄÇô¿ÉÒÔʹÓÃʲô·½Ê½ÍêÕûÕâÖÖ²Ù×÷£¿£¨ A £©

A.before ´¥·¢Æ÷ B.after´¥·¢Æ÷ C.instead of´¥·¢Æ÷ D.undo´¥·¢Æ÷ 4.ϵͳʼþ´¥·¢Æ÷¹²Ö§³Ö5ÖÖϵͳʼþ£¬ÏÂÁУ¨B £©Ê¼þ²»»á¼¤·¢´¥·¢Æ÷¡£ A.¸üÐÂÊý¾Ý B.²éѯÊý¾Ý C.ɾ³ýÊý¾Ý D.²åÈëÊý¾Ý

5.ÔÚʹÓÃCREATE TRIGGERÓï¾ä´´½¨Ðм¶´¥·¢Æ÷ʱ£¬ÄÄÒ»¸öÓï¾äÓÃÀ´ÒýÓþÉÊý¾Ý£¿£¨ D £© A. FOR EACH B.ON C.REFERENCING D.OLD

6.ÔÚ´´½¨´¥·¢Æ÷ʱ£¬ÄÄÒ»¸öÓï¾ä¾ö¶¨ÁË´¥·¢Æ÷ÊÇÕë¶ÔÿһÐÐÖ´ÐÐÒ»´Î£¬»¹ÊÇÕë¶Ôÿһ¸öÓï¾äÖ´ÐÐÒ»´Î£¿£¨ D £©

A.FOR EACH B.ON C.REFERENCING D.NEW

7.Ìæ´ú´¥·¢Æ÷¿ÉÒÔ±»¸½¼Óµ½ÄÄÒ»ÀàÊý¾Ý¿â¶ÔÏóÉÏ£¿£¨ C £© A.±í B.ÐòÁÐ C.ÊÓͼ D.Ýý

8.ÏÂÁÐÄĸöÓï¾äÓÃÓÚ½ûÓô¥·¢Æ÷£¿£¨ C £©

A.ALTER TABLE B.MODIFY TRIGGER C.ALTER TRIGGER D.DROP TRIGGER 9.¿ÉÒÔʹÓÃÄĸöÓï¾äÀ´¸ü¸ÄÏà¹ØÐÔ±êʶ·ûµÄÃû³Æ£¿£¨ A £© A.REFERENCING B.WHEN C.INSTEAD OF D.RENAME

10£®¶ÔÒ»¸öÊÓͼmyView´´½¨Ò»¸ö´¥·¢Æ÷mytrigger£¬Óï¾äΪ£¨ C £©¡£ A£®CREATE TRIGGER mytrigger

48