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