ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡ÔĶÁ¹ý³Ì·¢ÏÖÈκδíÎóÇë¸æËßÎÒÃÇ£¬Ð»Ð»£¡£¡ ±¨¸æ´íÎó
¹·¹·Êé¼® ·µ»Ø±¾ÊéĿ¼ ÎÒµÄÊé¼Ü ÎÒµÄÊéÇ© TXTÈ«±¾ÏÂÔØ ½øÈëÊé°É ¼ÓÈëÊéÇ©

SQLÓïÑÔÒÕÊõ(PDF¸ñʽ)-µÚ7ÕÂ

°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³£¬°´¼üÅÌÉ쵀 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×Ö¶ÎÓв»Í¬Öµ£»Èç¹ûÕÒµ½ÐèÒªµÄ¼Ç¼£¬¾Í·µ»ØÒªÕÒ¡¡

µÄÈÕÆÚ£»·ñÔò£¬¾Í·µ»ØÒ»¸öÔÚÈκÎÇé¿ö϶¼Ô¶±ÈÎÒÃÇËùÐèÈÕÆÚÒªÔçµÄÈÕÆÚ£¨´Ë´¦Ñ¡Á˹þ˹¶
·µ»ØÄ¿Â¼ ÉÏÒ»Ò³ ÏÂÒ»Ò³ »Øµ½¶¥²¿ ÔÞ£¨0£© ²È£¨0£©
δÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
ÎÂܰÌáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾­Ñé½±Àø£¬ÈÏÕæÐ´Ô­´´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾­Ñé½±ÀøÅ¶£¡