°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
¡¡¡¡andinv_type¡¡=0£»¡¡
ÉÏÀýÖУ¬¿ÉÄܳöÏÖÖØ¸´¸üÐÂÏàͬ×Ö¶ÎΪÏàͬÄÚÈݵÄÇé¿ö£¬ÕâµÄÈ·Ôö¼ÓÁËһСµã¶ù¿ªÏú¡£µ«ÔÚ¶à¡¡
ÊýÇé¿öÏ£¬Ò»¸öupdate»á±È¶à¸öupdate¿ìµÃ¶à¡£×¢ÒâÉÏÀýÖеġ°Âß¼£¨logic£©¡±£¬ÎÒÃÇͨ¹ýcase¡¡Óï¡¡
¾äʵÏÖÁËÒþʽµÄÌõ¼þÂß¼£¨implicit¡¡conditional¡¡logic£©£¬À´´¦ÀíÄÇЩ·ûºÏ¸üÐÂÌõ¼þµÄÊý¾Ý¼Ç¼£¬²¢¡¡
ÇÒ¸üÐÂÌõ¼þ¿ÉÒÔÓжàÌõ¡£¡¡
×ܽ᣺ÓпÉÄܵϰ£¬ÓÃÒ»¸öÓï¾ä´¦Àí¶à¸ö¸üУ»¾¡Á¿¼õÉÙ¶Ôͬһ¸ö±íµÄÖØ¸´·ÃÎÊ¡£¡¡
É÷ÓÃ×Ô¶¨Ò庯Êý¡¡
Careful¡¡Use¡¡of¡¡User¡Written¡¡Functions¡¡
½«×Ô¶¨Ò庯Êý£¨User¡Written¡¡Function£©Ç¶µ½SQLÓï¾äºó£¬Ëü¿ÉÄܱ»µ÷ÓÃÏ൱¶à´Î¡£Èç¹ûÔÚselect¡¡
Óï¾äµÄÑ¡³öÏîÁбíÖÐʹÓÃ×Ô¶¨Ò庯Êý£¬Ôòÿ·µ»ØÒ»ÐÐÊý¾Ý¾Í»áµ÷ÓÃÒ»´Î¸Ãº¯Êý¡£Èç¹û×Ô¶¨Ò庯¡¡
Êý³öÏÖÔÚ¡¡where¡¡×Ó¾äÖУ¬ÔòÿһÐÐÊý¾ÝÒª³É¹¦Í¨¹ý¹ýÂËÌõ¼þ¶¼»áµ÷ÓÃÒ»´Î¸Ãº¯Êý£»Èç¹û´Ëʱ¡¡
ÆäËû¹ýÂËÌõ¼þµÄɸѡÄÜÁ¦²»¹»Ç¿£¬×Ô¶¨Ò庯Êý±»µ÷ÓõĴÎÊý¾Í·Ç³£¿É¹ÛÁË¡£¡¡
Èç¹û×Ô¶¨Ò庯ÊýÄÚ²¿»¹ÒªÖ´ÐÐÒ»¸ö²éѯ£¬»á·¢ÉúʲôÇé¿öÄØ£¿Ã¿´Îº¯Êýµ÷Óö¼½«Ö´ÐдËÄÚ²¿²é¡¡
ѯ¡£Êµ¼ÊÉÏ£¬ÕâºÍ¹ØÁª×Ó²éѯ£¨correlated¡¡subquery£©Ð§¹ûÏàͬ£¬Ö»²»¹ý×Ô¶¨Ò庯ÊýµÄ·½Ê½×è¡¡
°ÁË»ùÓÚ¿ªÏúµÄÓÅ»¯Æ÷£¨cost¡based¡¡optimizer£¬CBO£©¶ÔÕû¸ö²éѯµÄÓÅ»¯Ð§¹û£¬ÒòΪ¡°×Ó²éѯ¡±¡¡
Òþ²ØÔÚº¯ÊýÖУ¬Êý¾Ý¿âÓÅ»¯Æ÷±Þ³¤Äª¼°¡£¡¡
ÏÂÃæ¾ÙÀý˵Ã÷½«SQLÓï¾äÒþ²ØÔÚ×Ô¶¨Ò庯ÊýÖеÄΣÏÕÐÔ¡£±íflightsÃèÊöÉÌÎñº½°à£¬Óк½°àºÅ¡¢Æð¡¡
·Éʱ¼ä¡¢µ½´ïʱ¼ä¼°»ú³¡¡¡IATA¡¡´úÂ루ע5£©µÈ×ֶΡ£IATA´úÂë¾ùΪÈý¸ö×Öĸ£¬ÓÐ9¡¡000¶à¸ö£¬¡¡
ËüÃǵĽâÊͱ£´æÔÚ²ÎÕÕ±íÖУ¬°üº¬³ÇÊÐÃû³Æ£¨ÈôÒ»¸ö³ÇÊÐÓжà¸ö»ú³¡ÔòӦΪ»ú³¡Ãû³Æ£©¡¢¹ú¼ÒÃû¡¡
³ÆµÈ¡£ÏÔÈ»£¬ÏÔʾº½°àÐÅϢʱ£¬Ó¦¸Ã°üº¬Ä¿µÄ³ÇÊеĻú³¡Ãû³Æ£¬¶ø²»ÊǼòµ¥µÄ¡¡IATA¡¡´úÂë¡£¡¡
Ôڴ˾ÍÓöµ½ÁËÏÖ´úÈí¼þ¹¤³ÌÖеÄì¶ÜÖ®Ò»¡£±»ÈÏΪÊÇ¡°ÓÅÁ¼´«Í³¡±µÄÄ£¿é»¯±à³ÌÒ»°ãÇé¿öÏ·dz£¡¡
ÊÊÓ㬵«¶ÔÊý¾Ý¿â±à³Ì¶øÑÔ£¬´úÂëÊÇ¿ª·¢ÕߺÍÊý¾Ý¿âÒýÇæµÄ¹²Ïí»î¶¯£¨shared¡¡activity£©£¬Ä£¿é¡¡
»¯ÒªÇó²¢²»Ã÷È·¡£ÀýÈ磬ÎÒÃÇ¿ÉÒÔ×ñÑÄ£¿é»¯ÔÔò±àдһ¸öСº¯ÊýÀ´²éÕÒ¡¡IATA¡¡´úÂ룬²¢·µ»Ø¡¡
ÍêÕûµÄ»ú³¡Ãû³Æ£º¡¡
¡¡create¡¡or¡¡replace¡¡function¡¡airport_city£¨iata_code¡¡in¡¡char£©¡¡
¡¡return¡¡varchar2¡¡
¡¡is¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡21¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡city_name¡¡varchar2£¨50£©£»¡¡
¡¡¡¡begin¡¡
¡¡¡¡select¡¡city¡¡
¡¡¡¡into¡¡city_name¡¡
¡¡¡¡from¡¡iata_airport_codes¡¡
¡¡¡¡where¡¡code¡¡=¡¡iata_code£»¡¡
¡¡¡¡return£¨city_name£©£»¡¡
¡¡¡¡end£»¡¡
¡¡¡¡/¡¡
¶ÔÓÚ²»ÊìϤ¡¡Oracle¡¡Óï·¨µÄ¶ÁÕߣ¬ÔÚ´Ë×ö¸ö˵Ã÷£¬ÒÔϲéѯÖÐtrunc£¨sysdate£©µÄ·µ»ØÖµÎª¡°½ñÌìµÄ¡¡
00£º00¡¡a¡£m¡£¡±£¬ÈÕÆÚ¼ÆËãÒÔÌìΪµ¥Î»£»ËùÒÔÆð·Éʱ¼äµÄÌõ¼þÊÇÖ¸½ñÌì¡¡8£º30¡¡a¡£m¡£¡¡ÖÁ¡¡4£º00¡¡p¡£m¡£¡¡Ö®¡¡
¼ä¡£µ÷ÓÃairport_cityº¯ÊýµÄ²éѯ¿ÉÒԷdz£¼òµ¥£¬ÀýÈ磺¡¡
¡¡¡¡select¡¡flight_number£»¡¡
¡¡¡¡to_char£¨departure_time£»¡¡'HH24£ºMI'£©¡¡DEPARTURE£»¡¡
¡¡¡¡airport_city£¨arrival£©¡¡¡¨TO¡¨¡¡
¡¡¡¡from¡¡flights¡¡
¡¡¡¡where¡¡departure_time¡¡between¡¡trunc£¨sysdate£©¡¡£«¡¡17/48¡¡
¡¡¡¡and¡¡trunc£¨sysdate£©¡¡£«¡¡16/24¡¡
¡¡¡¡order¡¡by¡¡departure_time¡¡
¡¡¡¡/¡¡
Õâ¸ö²éѯµÄÖ´ÐÐËÙ¶ÈÁîÈËÂúÒ⣻ÔÚÎÒ»úÆ÷ÉϵÄËæ»úÑù±¾ÖУ¬·µ»Ø77ÐÐÊý¾ÝÖ»ÓÃÁË0¡£18¡¡Ã루¶à´Î¡¡
Ö´ÐÐµÄÆ½¾ùÖµ£©£¬Óû§¶ÔÕâÑùµÄËٶȿ϶¨ÂúÒ⣨ͳ¼ÆÊý¾Ý±íÃ÷£¬´Ë´¦Àí·ÃÎÊÁË¡¡
303¸öÊý¾Ý¿é£¬53¸öÊÇ´Ó´ÅÅ̶Á³öµÄ¡ª¡ª¶øÇÒÿÐÐÊý¾ÝÓиöµÝ¹éµ÷Óã©¡£¡¡
ÎÒÃÇ»¹¿ÉÒÔÓÃjoinÀ´ÖØÐ´Õâ¶Î´úÂ룬×÷Ϊ²éÕÒº¯ÊýµÄÌæ´ú·½°¸£¬µ±È»Ëü¿´ÆðÀ´»áÉÔ΢¸´ÔÓЩ£º¡¡
¡¡¡¡¡¡select¡¡f¡£flight_number£»¡¡
¡¡¡¡¡¡to_char£¨f¡£departure_time£»¡¡'HH24£ºMI'£©¡¡DEPARTURE£»¡¡
¡¡¡¡¡¡a¡£city¡¡¡¨TO¡¨¡¡
¡¡¡¡¡¡from¡¡flights¡¡f£»¡¡
¡¡¡¡¡¡iata_airport_codes¡¡a¡¡
¡¡¡¡¡¡where¡¡a¡£code¡¡=¡¡f¡£arrival¡¡
¡¡¡¡¡¡and¡¡departure_time¡¡between¡¡trunc£¨sysdate£©¡¡£«¡¡17/48¡¡
¡¡¡¡¡¡and¡¡trunc£¨sysdate£©¡¡£«¡¡16/24¡¡
¡¡¡¡¡¡order¡¡by¡¡departure_time¡¡
¡¡¡¡¡¡/¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡22¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
Õâ¸ö²éѯֻÓÃÁË¡¡0¡£05¡¡Ã루ͳ¼ÆÊý¾Ýͬǰ£¬µ«Ã»Óеݹéµ÷Óã©¡£¶ÔÓÚÖ´ÐÐʱ¼ä²»µ½¡¡0¡£2¡¡ÃëµÄ²é¡¡
ѯÀ´Ëµ£¬ËÙ¶È¿ìÁË3±¶ËƺõÎ޹ؽôÒª£¬µ«ÔÚ´óÐÍϵͳÖУ¬ÕâЩ²éѯÿÌì¾³£Ö´ÐÐÊýÊ®Íò´Î¡ª¡ª¼Ù¡¡
ÉèÒÔÉϲéѯÿÌìÖ»Ö´ÐÐÎåÍò´Î£¬ÓÚÊDzéѯµÄ×ܺÄʱΪ¡¡2¡£5¡¡Ð¡Ê±¡£Èô²»Ê¹ÓÃÉÏÊö²éÕÒº¯Êý£¨lookup¡¡
function£©ÔòÖ»ÐèÒª²»µ½¡¡42¡¡·ÖÖÓ£¬ËÙ¶ÈÌá¸ß³¬¹ý300£¥£¬Õâ¶Ô´óÊý¾ÝÁ¿µÄϵͳÒâÒåÖØ´ó£¬×îÖÕ¡¡
´øÀ´¾¼ÃÉϵĽÚÔ¼¡£Í¨³££¬Ê¹ÓòéÕÒº¯Êý»áʹÅú´¦Àí³ÌÐòµÄÐÔÄܼ«²î¡£¶øÇÒ²éѯʱ¼äµÄÔö¼Ó£¬¡¡
»áʹͬһ̨»úÆ÷Ö§³ÖµÄ²¢·¢Óû§Êý¼õÉÙ£¬ÎÒÃǽ«ÔÚµÚ9Õ¶ԴËÕ¹¿ªÌÖÂÛ¡£¡¡
×ܽ᣺ÓÅ»¯Æ÷¶Ô×Ô¶¨Ò庯ÊýµÄ´úÂëÎÞÄÜΪÁ¦¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡SQL¡¡
¼ò½àµÄSSQQLL¡¡
Succinct¡¡SQL¡¡
ÊìÁ·µÄ¿ª·¢ÕßʹÓþ¡¿ÉÄÜÉٵġ¡SQLÓï¾äÍê³É¾¡¿ÉÄܶàµÄÊÂÇé¡£Ïà·´£¬×¾ÁӵĿª·¢ÕßÔòÇãÏòÓÚÑÏ¡¡
¸ñ×ñÑÒÑÖÆ¶©ºÃµÄ¸÷¹¦Äܲ½Ö裬ÏÂÃæÊǸöÕæÊµµÄÀý×Ó£º¡¡
¡¡¡Get¡¡the¡¡start¡¡of¡¡the¡¡accounting¡¡period¡¡
¡¡select¡¡closure_date¡¡
¡¡into¡¡dtPerSta¡¡
¡¡from¡¡tperrslt¡¡
¡¡where¡¡fiscal_year=to_char£¨Param_dtAcc£»'YYYY'£©¡¡
¡¡and¡¡rslt_period='1'¡¡£ü£ü¡¡to_char£¨Param_dtAcc£»'MM'£©£»¡¡
¡¡¡Get¡¡the¡¡end¡¡of¡¡the¡¡period¡¡out¡¡of¡¡closure¡¡
¡¡select¡¡closure_date¡¡
¡¡into¡¡dtPerClosure¡¡
¡¡from¡¡tperrslt¡¡
¡¡where¡¡fiscal_year=to_char£¨Param_dtAcc£»'YYYY'£©¡¡
¡¡and¡¡rslt_period='9'¡¡£ü£ü¡¡to_char£¨Param_dtAcc£»'MM'£©£»¡¡
¾ÍËãËÙ¶È¿ÉÒÔ½ÓÊÜ£¬ÕâÒ²ÊǶμ«ÔãµÄ´úÂë¡£ºÜ²»ÐÒ£¬ÐÔÄÜר¼Ò¾³£Óöµ½ÕâÖÖÔã¸âµÄ´úÂë¡£¼ÈÈ»¡¡
Á½¸öÖµÀ´×ÔÓÚͬһ±í£¬ÎªÊ²Ã´Òª·Ö±ðÓÃÁ½¸ö²»Í¬µÄÓï¾äÄØ£¿ÏÂÃæÓÃOracleµÄbulk¡¡collect×Ӿ䣬¡¡
Ò»´ÎÐÔ½«Á½¸öÖµ·Åµ½Êý×éÖУ¬ÕâºÜÈÝÒ×ʵÏÖ£¬¹Ø¼üÔÚÓÚ¶Ôrslt_period½øÐÐorder¡¡by²Ù×÷£¬ÈçÏÂËù¡¡
ʾ£º¡¡
¡¡select¡¡closure_date¡¡
¡¡bulk¡¡collect¡¡into¡¡dtPerStaArray¡¡
¡¡from¡¡tperrslt¡¡
¡¡where¡¡fiscal_year=to_char£¨Param_dtAcc£»'YYYY'£©¡¡
¡¡and¡¡rslt_period¡¡in¡¡£¨'1'¡¡£ü£ü¡¡to_char£¨Param_dtAcc£»'MM'£©£»¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡23¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡'9'¡¡£ü£ü¡¡to_char£¨Param_dtAcc£»'MM'£©£©¡¡
¡¡order¡¡by¡¡rslt_period£»¡¡
ÓÚÊÇ£¬ÕâÁ½¸öÈÕÆÚ±»·Ö±ð±£´æÔÚÊý×éµÄµÚÒ»¸öºÍµÚ¶þ¸öλÖá£ÆäÖУ¬bulkcollect¡¡ÊÇ¡¡PL/SQL¡¡Óï¡¡
ÑÔÌØÓе쬵«ÈκÎÖ§³ÖÏÔʽ»òÒþʽÊý×éÌáÈ¡µÄÓïÑÔ¶¼¿ÉÈç·¨ÅÚÖÆ¡£¡¡
ÆäʵÉõÖÁÊý×é¶¼ÊDz»±ØÒªµÄ£¬ÓÃÒÔϵÄС¼¼ÇÉ£¨×¢6£©£¬ÕâÁ½¸öÖµ¾Í¿ÉÒÔ±»ÌáÈ¡µ½Á½¸ö±äÁ¿ÖУº¡¡
select¡¡max£¨decode£¨substr£¨rslt_period£»¡¡1£»¡¡1£©£»¡¡¡Check¡¡the¡¡first¡¡character¡¡
'1'£»¡¡closure_date£»¡¡
¡If¡¡it's¡¡'1'¡¡return¡¡the¡¡date¡¡we¡¡want¡¡
to_date£¨'14/10/1066'£»¡¡'DD/MM/YYYY'£©£©£©£»¡¡
¡Otherwise¡¡something¡¡old¡¡
max£¨decode£¨substr£¨rslt_period£»¡¡1£»¡¡1£©£»¡¡
'9'£»¡¡closure_date£»¡¡¡The¡¡date¡¡wewant¡¡
to_date£¨'14/10/1066'£»¡¡'DD/MM/YYYY'£©£©£©£»¡¡
into¡¡dtPerSta£»¡¡dtPerClosure¡¡
from¡¡tperrslt¡¡
where¡¡fiscal_year=to_char£¨Param_dtAcc£»'YYYY'£©¡¡
and¡¡rslt_period¡¡in¡¡£¨'1'¡¡£ü£ü¡¡to_char£¨Param_dtAcc£»'MM'£©£»¡¡
'9'¡¡£ü£ü¡¡to_char£¨Param_dtAcc£»'MM'£©£©£»¡¡
ÔÚÕâ¸öÀý×ÓÖУ¬Ô¤ÆÚ·µ»ØÖµÎªÁ½ÐÐÊý¾Ý£¬ËùÒÔÎÊÌâÊÇ£ºÈçºÎ°ÑÔ±¾ÊôÓÚÒ»¸ö×ֶεÄÁ½ÐÐÊý¾Ý£¬¡¡
ÒÔÒ»ÐÐÊý¾ÝÁ½¸ö×ֶεķ½Ê½¼ìË÷³öÀ´£¨ÕýÈçÊý×éÌáÈ¡µÄÀý×ÓÒ»Ñù£©¡£Îª´Ë£¬ÎÒÃÇ¡¡
¼ì²érslt_period×ֶΣ¬Á½ÐÐÊý¾ÝµÄrslt_period×Ö¶ÎÓв»Í¬Öµ£»Èç¹ûÕÒµ½ÐèÒªµÄ¼Ç¼£¬¾Í·µ»ØÒªÕÒ¡¡
µÄÈÕÆÚ£»·ñÔò£¬¾Í·µ»ØÒ»¸öÔÚÈκÎÇé¿ö϶¼Ô¶±ÈÎÒÃÇËùÐèÈÕÆÚÒªÔçµÄÈÕÆÚ£¨´Ë´¦Ñ¡Á˹þ˹¶