PL/SQLÓû§Ö¸ÄÏÓë²Î¿¼ PL/SQLÓ¦ÓóÌÐòÐÔÄܵ÷ÓÅ£¨×ª£©
µÚÊ®¶þÕ PL/SQLÓ¦ÓóÌÐòÐÔÄܵ÷ÓÅ
1¡¢PL/SQLÐÔÄÜÎÊÌâµÄÔµÓÉ
Ó¦»ùÓÚPL/SQLµÄÓ¦ÓóÌÐòÊ©ÐÐЧÂʵÍÏÂʱ£¬Í¨³£ÊÇÒòΪ²»ºÃµÄSQL»°Óï¡¢±à³Ì²½Ö裬¶ÔPL/SQL»ù´¡ÕÆÎÕÔã¸â»òÊÇÂÒÓù²ÏíÄÚ´æ´¢Æ÷´Ù³ÉµÄ¡£
•PL/SQLÖв»ºÃµÄSQL»°Óï
PL/SQL±à³Ì¿´ÉÏÈ¥Ïà¶ÔÕսϼòµ¥£¬ÓÉÓÚËüÃǵĸ´ÔÓÄÚÈݶ¼ÑÚ²ØÔÚSQL»°ÓïÖУ¬SQL»°Óï¾³£·Öµ£´óÁ¿µÄ¹¤×÷¡£ÕâÄËÊÇΪºÎ²»ºÃµÄSQL»°ÓïÊÇÊ©ÐÐЧÂʵÍϵÄÖØÒªÔµ¹ÊÁË¡£ÈçÈôÒ»¸ö³ÌÐòÖаüÔкܶ಻ºÃµÄSQL»°ÓÄÇô£¬ÎÞÂÛÊÇPL/SQL»°ÓïдµÄÓÐºÎÆäÃÀ¶¼ÊÇÓÚÊÂÎÞ²¹µÄ¡£
ÈçÆäSQL»°Óï¼õµÍÁËÎÒÃǵijÌÐòËٶȵϰ£¬½«Òª°´µ×ÏÂÁбíÖеIJ½Öè·ÖÎöÒ»ÏÂ×ÓËüÃǵÄÖ´Ðмƻ®ºÍÐÔÄÜ£¬Æäºó´Óбà×ëSQL»°Óï¡£±ÈÈ磬²éѯÓÅ»¯Æ÷µÄ½Òʾ¾Í¿ÉÄÜ»áÅųýµôÎÊÌ⣬ÈçûÓбØÒªµÄÈ«±íɨÃè¡£
Ò».EXPLAIN PLAN»°Óï
¶þ.Ê©ÓÃTKPROFµÄSQL TraceЧÄÜ
Èý.Oracle TraceЧÄÜ
•Ôã¸âµÄ±à³ÌÏ°Æø
Õý³££¬Ôã¸âµÄ±à³ÌÏ°ÆøÒ²»á¸ø³ÌÐò´ø»Ø¸ºÃæÓ°Ïì¡£ÕâÖÖÇé¿öÏ£¬¼´Ê¹ÊÇÓÐÐĵõijÌÐòԱд³öµÄ´úÂëÒ²Ò²Ðí·Á°ÐÔÄÜ·¢»Ó¡£
ÖÁÓÚ¸ø¶¨µÄÒ»ÏîÈÎÎñ£¬ÎÞÂÛÊÇËùÑ¡µÄ³ÌÐòÓïÑÔÓкεÈÊʺϣ¬±à×ëÆ·ÖʽϲîµÄ×Ó³ÌÐò(±ÈÈ磬һ¸öºÜÂýµÄ·ÖÃűðÀà»ò¼ìË÷º¯Êý)»òÐí»ÙµôÕû¸öÐÔÄÜ¡£¼ÙÉèÓÐÒ»¸ö¼±Ðè±»Ó¦ÓóÌÐòƵ·±µ÷ÓõIJéѯº¯Êý£¬ÈçÆäÕâ¸öº¯Êý²»ÊÇÓ¦ÓùþÏ£»ò¶þ·Ö·¨£¬¶øÊÇÖ±½ÓÔËÓÃÏßÐÔ²éѰ£¬¾Í»á´ó´óÓ°ÏìЧÂÊ¡£Ôã¸âµÄ³ÌÐòÖ¸µÄÊÇÄÇЩ´øÓдÓδÓйýÔËÓùýµÄ±äÁ¿µÄ£¬´«ËÍûÓбØÒªµÄ²ÎÊýµÄ£¬°Ñ³õʼ»¯»ò¼ÆËã·Åµ½Óò»×ŵÄÑ»·ÖÐÊ©ÐеijÌÐòÖ®Àà¡£
•ÄÚÖú¯ÊýµÄ·´¸´
PL/SQLÌṩÁ˺öà¸ß¶ÈÓÅ»¯¹ýµÄº¯Êý£¬ÈçREPLACE¡¢TRANSLATE¡¢SUBSTR¡¢INSTR¡¢RPADºÍLTRIMµÈ¡£²»ÓÃÊÖ¹¤±à׫ÎÒÃÇ×Ô¸÷¶ùµÄ°æ±¾£¬ÓÉÓÚÄÚÖú¯ÊýÒѾÊǺܸßЧÂʵÄÁË¡£¼´»òÄÚÖú¯ÊýµÄЧÄÜÔ¶Ô¶³¬¹ýÎÒÃÇµÄØ½Ð裬Ҳ²»ÓÃÊÖ¹¤¶ÒÏÖËüÃÇЧÄܵÄ×Ó¼¯¡£
•µÍЧµÄÁ÷³ÌÍ³ÖÆ»°Óï
ÔÚ¼ÆËãÂß¼±í´ïʽֵµÄʱ·Ö£¬PL/SQLÔËÓöÌ·µÄ¼ÆËãģʽ¡£ÇÒ²»Ëµ£¬ÍòÒ»½á¹û¿ÉÒÔ±»È·¶¨ÏÂÀ´£¬PL/SQL¾Í»áÖÕÖ¹Óàϵıí´ïʽ¼ÆËã¡£±ÈÈ磬ϲ¿µÄOR±í´ïʽ£¬Ó¦sal±È1500СµÄʱ·Ö£¬²Ù×÷·û×ó±ßµÄÖµÄËÊÇTRUE£¬Ö®ËùÒÔPL/SQL¾Í²»»áÔÙ¼ÆËã²Ù×÷·ûÓÒ²à±í´ïʽµÄÖµ£º
IF (sal < 1500) OR (comm IS NULL) THEN
...
END IF;
ÏÖÏ£¬¿¼ÂÇϲ¿µÄAND±í´ïʽ£º
IF credit_ok(cust_id) AND (loan < 5000) THEN
...
END IF;
ÔÚÉÏÃæµÄº¯ÊýÖУ¬²¼¶ûº¯Êýcredit_okÀÏÊDZ»µ÷Óᣵ«ÊÇ£¬ÈçÆäÎÒÃÇÏòµ×ÏÂÕâôÍË»»Á½¸ö±í´ïʽµÄλÖãº
IF (loan < 5000) AND credit_ok(cust_id) THEN
...
E
Ïà¹ØÎĵµ£º
ϵͳ»·¾³£ºWindows 7
Èí¼þ»·¾³£ºVisual C++ 2008 SP1 +SQL Server 2005
±¾´ÎÄ¿µÄ£º±àдһ¸öº½¿Õ¹ÜÀíϵͳ
ÕâÊÇÊý¾Ý¿â¿Î³ÌÉè¼ÆµÄ³É¹û£¬ËäÈ»³É¼¨²»¼Ñ£¬µ«ÊÇ×÷ΪÎÒÓÃVC++ ÒÔÀ´±àдµÄ×î´ó³ÌÐò»¹ÊÇ´«µ½ÍøÉÏ£¬ÒÔ¹©²Î¿¼¡£ÓÃVC++ ×öÊý¾Ý¿âÉè¼Æ²¢²»ÈÝÒ×£¬µ«Ò²²»ÊDz»¿ÉÄÜ¡£ÒÔÏÂÊÇÎҵijÌÐò½çÃæ£¬ºóÃæ ......
showºÍsetÃüÁîÊÇÁ½ÌõÓÃÓÚά»¤SQL*Plusϵͳ±äÁ¿µÄÃüÁî
SQL> show all --²é¿´ËùÓÐ68¸öϵͳ±äÁ¿Öµ
SQL> show user --ÏÔʾµ±Ç°Á¬½ÓÓû§
SQL> show error¡¡¡¡ --ÏÔʾ´íÎó
SQL> set heading off --½ûÖ¹Êä³öÁбêÌ⣬ĬÈÏֵΪON
SQL> set feedback off --½ûÖ¹ÏÔʾ×îºóÒ»ÐеļÆÊý·´À¡ÐÅÏ¢£¬Ä¬ÈÏֵΪ"¶Ô6¸ö» ......
SQL²Ù×÷È«¼¯
ÏÂÁÐÓï¾ä²¿·ÖÊÇMssqlÓï¾ä£¬²»¿ÉÒÔÔÚaccessÖÐʹÓá£
SQL·ÖÀࣺ
DDL—Êý¾Ý¶¨ÒåÓïÑÔ(CREATE£¬ALTER£¬DROP£¬DECLARE)
DML—Êý¾Ý²Ù×ÝÓïÑÔ(SELECT£¬DELETE£¬UPDATE£¬INSERT)
DCL—Êý¾Ý¿ØÖÆÓïÑÔ(GRANT£¬REVOKE£¬COMMIT£¬ROLLBACK)
Ê×ÏÈ,¼òÒª½éÉÜ»ù´¡Óï¾ä£º& ......
SQL²Ù×÷È«¼¯
ÏÂÁÐÓï¾ä²¿·ÖÊÇMssqlÓï¾ä£¬²»¿ÉÒÔÔÚaccessÖÐʹÓá£
SQL·ÖÀࣺ
DDL—Êý¾Ý¶¨ÒåÓïÑÔ(CREATE£¬ALTER£¬DROP£¬DECLARE)
DML—Êý¾Ý²Ù×ÝÓïÑÔ(SELECT£¬DELETE£¬UPDATE£¬INSERT)
DCL—Êý¾Ý¿ØÖÆÓïÑÔ(GRANT£¬REVOKE£¬COMMIT£¬ROLLBACK)
Ê×ÏÈ,¼òÒª½éÉÜ»ù´¡Óï¾ä£º
1¡¢ËµÃ÷£º´´½¨Êý¾Ý¿â
CREATE ......
/* °üº¬CÍ·Îļþ */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/* °üº¬SQLCAÍ·Îļþ */
EXEC SQL INCLUDE sqlca;
EXEC SQL INCLUDE sqlda;
int main()
{
EXEC SQL BEGIN DECLARE SECTION;
int money;
......