1ã åå¨è¿ç¨å¨è½¯ä»¶å¼åä¸æä»ä¹æ ·çä¼å¿åå£å¿ï¼æä»ä¹æ ·ç缺ç¹ã
çï¼åå¨è¿ç¨çä¼ç¹ï¼
ï¼1ï¼ å
许模ååç¨åºè®¾è®¡ï¼ä»¥åå¯ä»¥éå¤è°ç¨;å¯ä»¥ç±ä¸äººæ¥å®æï¼å¹¶å¯ç¬ç«äºç¨åºæºä»£ç èåç¬ä¿®æ¹ãè¿æ ·ä¸ä¸ªé¡¹ç®å¨éæ±åæãçé¢è®¾è®¡ä»¥åæ°æ®åºè®¾è®¡å®äºä»¥åï¼å°±å¯ä»¥å¼å§ååå¨è¿ç¨äºï¼åä¸æ¶é´æ°æ®è®¿é®å±ä¹å¯ä»¥å¼å§åäºã没æå¿
è¦ç详ç»è®¾è®¡è¯´æå®æäºå¨ç¼ç çæ¶åæå¼å§åSQLè¯å¥ã
ï¼2ï¼ æ§è¡æ´å¿«
åå¨è¿ç¨é½æ¯é¢ç¼è¯å½ä»¤ï¼æ§è¡èµ·æ¥æ¯SQLè¯å¥æ´å¿«ã
ï¼3ï¼ åå°ç½ç»æµé
ï¼4ï¼ å¯ä½ä¸ºå®å
¨æºå¶ï¼è½å¤å±è½æ°æ®åºï¼ç¨æ·å¹¶ä¸ç¥éæ°æ®åºççå®ç»æã
åå¨è¿ç¨ç缺ç¹
æ大ç缺ç¹å°±æ¯æ´æ¢æ°æ®åºçæ¶åï¼æ¯å¦SQL_Serveræ°æ®åºæ¢æOracleæ°æ®åºæ¶SQL_Serveræ°æ®åºçåå¨è¿ç¨å¨Oracleå½ä¸å®å
¨ä¸è½ç¨ï¼åªè½éæ°ç¨Oracleçå½ä»¤æ¥ååå¨è¿ç¨ã
2ã å¦æä½ ç项ç®å¨å¼åæ¶ä½¿ç¨äºåå¨è¿ç¨ï¼å¨æ¹æ¢æ°æ®åºæ¶ï¼ä¼åçä»ä¹æ ·çé®é¢ï¼å¦ä½è§£å³ï¼
çï¼æ´æ¢æ°æ®åºçæ¶åï¼æ¯å¦SQL_Serveræ°æ®åºæ¢æOracleæ°æ®åºæ¶SQL_Serveræ°æ®åºçåå¨è¿ç¨å¨Oracleå½ä¸å®å
¨ä¸è½ç¨ï¼åªè½éæ°ç¨Oracleçå½ä»¤æ¥ååå¨è¿ç¨ã
对äºè¿ä¸ªé®é¢ï¼è§£å³çåæ³æ¯ï¼éç¨ç»ä¸çæ°æ®åºå»ºæ¨¡å·¥å
·ï¼æ¯å¦ï¼ ï¼ï¼ææçæ°æ®åºè®¾è®¡å
¨é¨å¨è¿ä¸ªç»ä¸ä¸ªæ°æ®åºå»ºæ¨¡å·¥å
·éè¿è¡ï¼åå¨è¿ç¨ä¹å¯ä»¥å¨è¿éå®æãæåå¨æ ¹æ®éè¦è½¬è®¾æå
·ä½çæä¸ç§æ°æ®åºï¼å¦æéè¦SQL_Server就转åæSQL_Serveræ°æ®åºï¼å¦æéè¦Oracle就转åæOracleæ°æ®åºã
3ã å¨åå¨è¿ç¨ä¸å¦æåé¢çè¯å¥åçé误ï¼åé¢çè¯å¥ä¼ä¸ä¼æ§è¡ï¼ä¸ºä»ä¹ã
4ã å¨åå¨è¿ç¨ä¸ï¼ææ ·è¿è¡å¼å¸¸å¤çï¼
5ã åå¨è¿ç¨çè¾åºåæ°æå ç§å½¢å¼ï¼åå«ä»ç»ä¸ä¸ï¼ è¿åå¼çç±»åæ没æä»ä¹éå¶ï¼
çï¼å¨SQL_Serverä¸æåç§å½¢å¼ï¼
ï¼1ï¼ã以OUTPUTåæ°å½¢å¼è¿åæ°æ®ï¼è¿åå¼çç±»åéå¶ä¸ºï¼æ´å½¢å¼ãå符å¼ä¹å¯ä»¥æ¯æ¸¸æ åéï¼è¿ç§å½¢å¼ï¼å¯ä»¥ä¸æ¬¡è¿åå¤ä¸ªå¼ã
ï¼2ï¼ã以Returnçå½¢å¼è¿åå¼ï¼è¿åå¼çç±»åéå¶ä¸ºï¼æ´å½¢å¼ï¼ 以表æè¿ç¨çæ§è¡ç¶æã
ï¼3ï¼ãè¿åSELECTè¯å¥çç»æéã
ï¼4ï¼ãå¯ä»¥è¿åè½ä»åå¨è¿ç¨å¤å¼ç¨çå
¨å±æ¸¸æ ã
å¨Oracleä¸æä¸ç§å½¢å¼ï¼
ï¼1ï¼ã以OUTåæ°å½¢å¼è¿åæ°æ®ï¼è¿åå¼çç±»åéå¶ä¸ºï¼ä¸å¯ä»¥æ¯å¤§æ°æ®ç±»åå¦ï¼LOBãCLOBãBFILEçã
ï¼2ï¼ã以IN OUTå½¢å¼è¿åæ°æ®ï¼è¿åå¼çç±»åéå¶ä¸ºï¼ä¹ä¸å¯ä»¥æ¯å¤§æ°æ®ç±»åã
ï¼3ï¼ãè¿åSELECTè¯å¥çç»æéã
å¨Oracleä¸åå¨è¿ç¨æ²¡æReturnçè¿åå¼ï¼åªææ¹æ³Functionææè¿åå¼
6ã å¦æ两个ä¸åçåå¨è¿ç¨å¨ä¸ä¸ªæ¹ä¸è¢«åæ¯è°ç¨ï¼å½å
¶ä¸ä»»ä¸ä¸ªåçå¼å¸¸æ¶ï¼è¦æ±åæ¶åæ»ä¸¤ä¸ªåå¨è¿ç¨çæä½ï¼æä¹æ ·å¤çï¼
çï¼å¯ä»¥å建å¦ä¸ªä¸ä¸ªåå¨è¿ç¨ï¼å¨è¿ä¸ªåå¨ä¸ï¼å建ä¸ä¸ªèªç»äºå¡ï¼å¨è¿ä¸ªèªç»äºå¡ä¸åå«å»è°ç¨é£ä¸¤ä¸ªåå¨è¿ç¨ãè¯æ³å¦ä¸ï¼
create procedure CallTwoProc
as
begin transaction
execute 第ä¸ä¸ªåå¨è¿ç¨
execute 第äºä¸ªåå¨è¿ç¨
commit transaction
go
7ã 请è°ä¸è°è§å¾çä¼ç¹ï¼å建è§å¾çå¿
è¦æ§ï¼ãåºäºè§å¾çå¢å æ¹ä¼å¸¦æ¥ä»ä¹æ ·çé®é¢ï¼å¦ä½è§£å³æ ·ççé®é¢ï¼
çï¼è§å¾çä¼ç¹ï¼
(1)ãå¯ä»¥çé表ä¸çè¡ã
(2)ãå¯ä»¥å°å¤ä¸ªç©çæ°æ®è¡¨æ½è±¡ä¸ºä¸ä¸ªé»è¾è¡¨ï¼æå©äºè·¨åºæä½ã
(3)ãé²æ¢æªç»è®¸å¯çç¨æ·è®¿é®æææ°æ®ã
(4)ãéä½æ°æ®åºçå¤æç¨åº¦ã
(5)ãè§å¾æ¯ä¸ç§æ½è±¡è¡¨ï¼å®ä¸å ç¨åå¨ç©ºé´ã
åºäºè§å¾çå¢å æ¹ä¼å¸¦æ¥ä¸¤ä¸ªçé®é¢ï¼
(1)ãINSERTãUPDATEåDELETEè¯å¥é½å¿
é¡»è¦æ»¡è¶³è§å¾çæ¡ä»¶ï¼å³è§å¾è¦è½çå¾å°çæè½INSERTãUPDATEåDELETEãéè¿è§å¾çå é¤æ°æ®ï¼è¦æ
ç¨ï¼å¦æè§å¾çä¸å°çï¼æ æ³å é¤ã
解å³åæ³ï¼ç»è§å¾å ä¸with check option约æä¹åï¼åºäºè§å¾çæ´æ¹ï¼å¡æ¯ä¸ç¬¦åè§å¾çº¦æ(whereâ¦â¦)çä¿®æ¹ãæå
¥ãå é¤æ¶ä¼æ¥éï¼ç¨ä»¥éå¶å¯¹è§å¾çä¿®æ¹ã
(2)ãå½ä¸ä¸ªè§å¾æ¯åºäºå¤ä¸ªåºè¡¨å»ºç«çï¼å¨è§å¾ä¸ä¿®æ¹æ°æ®æ¶ï¼åªè½INSERTæUPDATEåºäºä¸ä¸ªåºè¡¨çå段çå¼ï¼æ æ³åæ¶ä¿®æ¹ä¸¤ä¸ªæ以ä¸çåºè¡¨çå段ãDELETEä¸è½è¿è¡ï¼å 为DELETEè¯å¥ä»
å¨è§å¾çFROMåå¥ä¸åªå
å«ä¸ä¸ªè¡¨æ¶æå¯ä»¥å¼ç¨æ´æ°è§å¾ã
解å³åæ³ï¼å»ºç«INSTEAD OF触åå¨ï¼æ对è§å¾çINSERTãUPDATEãDELETEæä½è½¬æ¢ä¸ºåå«å¯¹å 个åºè¡¨çINSERTãUPDATEãDELETEæä½ï¼åä½å æ¥è¿è¡ãè¿æ ·å¯¹è§å¾çINSERTãUPDATEãDELETEæä½å°±ææäºã
8ã ç´¢å¼æä»ä¹æ ·çä¼ç¹ï¼ä¹æä»ä¹æ ·ç缺ç¹ï¼æ们å¨è¿ç¨ç´¢å¼çæ¶åï¼æ¯æ¾ç¤ºè¿ç¨çåï¼é£æ¯æä¹æ ·åºç¨çå¢ï¼è¯·ä¸¾ä¾è¯´æã
çï¼ç´¢å¼çä¼ç¹ï¼å¯ä»¥å å¿«æ们çæ¥è¯¢é度ã
ç´¢å¼ç缺ç¹ï¼
(1)ãå½æ们INSERTãUPDATEãDELETEæ¶ ï¼æ°æ®åºç³»ç»æ»æ¯è¦å» æ´æ°æ¯ä¸ä¸ªç´¢å¼ï¼å æ¤è浪费å¾å¤æ¶é´ãæ以å¨åºäºäºå¡çç³»ç»ä¸ï¼åºå°½éå°å»ºç«ç´¢å¼ã
(2)ã带索å¼çç»å¨æ°æ®åºä¸ä¼å æ®æ´å¤çåå¨ç©ºé´ã
ç´¢å¼å¹¶ä¸æ¾ç¤ºä½¿ç¨ï¼èæ¯å¨æ§è¡SQLè¯å¥æ¶ï¼å½ä¸å«æWHEREãORDER BYãGROUP BYãHAVINGçäºå¥æ¶ï¼å³å¡æ¯æ对æ°æ®è¿è¡æç´¢åæåºçè¯å¥ï¼æ¥è¯¢ä¼åå¨ç»ä»¶ä¼æ¾åºæ¥è¯¢æçæé«çåæ³ï¼èæ¥è¯¢ä¼åå¨å°±ä¼éæ©æä¼çç´¢å¼è¿è¡å·¥ä½ã
9ã å¦æä¸ä¸ªè¡¨å
¶ä¸æä¸ä¸ªå段å¾å¸¸ç¨ï¼å®ä»¬æ¯Aï¼Bï¼Cä¸ä¸ªå段 ï¼å
¶ä¸Bå段æ´å¸¸ç¨ï¼é£ä¹è¿æ¶æ们åºè¯¥æä¹æ ·å建索å¼ã
çï¼å建ä¸ä¸ªç»åç´¢å¼ï¼å
¶ä¸å
æ¬AãBãCä¸ä¸ªå段 ï¼ä½ä¸å®è¦æBå段æ¾å¨æåé¢ã
å 为Bå段æ常ç¨ï¼å®çå¯ä¸æ§åºè¯¥æ¯æé«çã
10ãå¦æä¸ä¸ªè¡¨æ10ä¸æ¡è®°å½ï¼å
¶ä¸æ10个å®æ®µé常常ç¨ï¼æ们åºè¯¥æä¹æ ·ä»å»ºç´¢å¼ã
çï¼å建ä¸ä¸ªç»åç´¢å¼ï¼å
¶ä¸åªå
æ¬é常常ç¨ç10个å段 ï¼æåç顺åºä¸å®æ¯æå¯ä¸æ§çé«ä½è¿è¡æåï¼å¯ä¸æ§æé«çå段æ¾å¨æåé¢ï¼å¯ä¸æ§æä½çæ¾å¨æåé¢ã
11ï¼è§¦åå¨ä¼äº§çéå½è°ç¨åï¼è¯·ä¸¾ä¾è¯´æï¼åè¿ç§æ
åµï¼æ们åºè¯¥æä¹æ ·é¿å
å¢ï¼
çï¼è§¦åå¨ä¼äº§çéå½è°ç¨ãæ两ç§æ
åµ
第ä¸ç§ï¼ç´æ¥éå½ å³è§¦åå¨è¢«æ¿å并æ§è¡ä¸ä¸ªæä½ï¼è该æä½å使åä¸ä¸ªè§¦åå¨è¢«æ¿åã
第äºç§ï¼é´æ¥éå½ å³è§¦åå¨è¢«æ¿å并æ§è¡ä¸ä¸ªæä½ï¼è该æä½å使å¦ä¸ä¸ªè§¦åå¨è¢«æ¿åã第äºä¸ªè§¦åå¨å使å¾ç¬¬ä¸ä¸ªè§¦åå¨çåå§è¡¨å¾å°æ´æ°ï¼ä»èåä¸æ¬¡å¼å第ä¸ä¸ªè§¦åå¨ã
é¿å
çåæ³æï¼
(1)ãå¨ç¼å触åå¨éï¼äººä¸ºç注æå°è¿ä¸ç¹ã
(2)ãé²æ¢ç´æ¥éå½ï¼alter database pubs set RECURSIVE_TRIGGERS OFF
é²æ¢é´æ¥éå½ï¼è¯·å° nested triggers æå¡å¨é项设置为 0ã
12ãå¦æåºäºä¸ä¸ªåºè¡¨å建äºå¾å¤ä¸ªåç§ç±»åç触åå¨ï¼æ¯å¦UPDATA触åå¨ï¼æ们è·æ®ä»ä¹æ¥ç¡®å®ä»ä»¬ææ§è¡ç顺åºï¼
13ãï¼1ï¼å¨æ°æ®æ¥è¯¢ä¸ï¼æ们éè¦æ两个æè
å¤ä¸ªè¡¨ä½æ¨ªæ¹åèæ¥ï¼ç¨ä»ä¹å½ä»¤ï¼
çï¼ç¨èæ¥æ¥è§£å³è¿ä¸ªé®é¢joinâ¦..on
(2)请é®èæ¥æå¤å°ç§ç±»ï¼åå«æ¯åªå ç§ï¼
çï¼æä¸ç§ï¼ä»ä»¬æ¯å·¦èæ¥ left join â¦.on,å³èæ¥ right joinâ¦..on, å
èæ¥inner joinâ¦â¦onæè
joinâ¦â¦onã
(3)å¨èæ¥ä¸ï¼ç¨ä»ä¹æ¥æå®èæ¥çæ¡ä»¶ï¼
çï¼ç¨on
(4)å¨èæ¥æ¥è¯¢æ¥è¯¢ä¸ï¼æ没æè§å®å¨ææ¥è¯¢ç两个表çå段ä¸ä¸å®è¦æ主é®å段ï¼
çï¼æ²¡æè¿ç§è¯´æ³ï¼ä¸ä¸å®å¿
é¡»æ¥è¯¢ä¸»é®ï¼æ£ç¡®ç说æ³æ¯ï¼å
¸åçèæ¥æ¯æå®ä¸ä¸ªè¡¨çå¤é®ä»¥åå¨å¦ä¸ä¸ªè¡¨ä¸çå
³èé®ã
14ï¼1ï¼å¨æ°æ®æ¥è¯¢ä¸ï¼æ们éè¦æ两个æè
å¤ä¸ªè¡¨ä½çºµæ¹åèæ¥ï¼ç¨ä»ä¹å½ä»¤ï¼
çï¼ä½¿ç¨Unionèåå½ä»¤ã
ï¼2ï¼å¨ä½¿ç¨Unionèåå½ä»¤æ¶ï¼æ们åºæ³¨æäºä»ä¹ï¼
çï¼æèåçå 个æ¥è¯¢ï¼å段åå¯ä»¥ä¸ç¸åï¼ä½æ¯å段类åãå段æ°é½å¿
é¡»è¦ç¸åã
ï¼3ï¼è¯·è¯´ä¸è¯´UnionåUnion Allè¿ä¸¤ä¸ªå½ä»¤çåºå«ï¼
çï¼Unionå½ä»¤å¾å°çç»æä¼å»æéå¤é¡¹ï¼ä½äºä¸ä¸ªdistinctæä½ã
Union Allå½ä»¤ä¸ä¼å»æéå¤é¡¹ã
15ãæ°æ®åºçå®å
¨å管çæ¹é¢çé´é¢æ²¡æé®ã
ä¾å¾å¹´æ¥è¯´ï¼ç¬¬ä¸å°ç¬¬ä¸é¢å¸¸é®ï¼ä½ ççå§
温馨提示:答案为网友推荐,仅供参考