SQL_Server存儲(chǔ)過(guò)程學(xué)習(xí)總結(jié)

SQL_Server存儲(chǔ)過(guò)程學(xué)習(xí)總結(jié)

ID:38582530

大?。?82.50 KB

頁(yè)數(shù):12頁(yè)

時(shí)間:2019-06-15

SQL_Server存儲(chǔ)過(guò)程學(xué)習(xí)總結(jié)_第1頁(yè)
SQL_Server存儲(chǔ)過(guò)程學(xué)習(xí)總結(jié)_第2頁(yè)
SQL_Server存儲(chǔ)過(guò)程學(xué)習(xí)總結(jié)_第3頁(yè)
SQL_Server存儲(chǔ)過(guò)程學(xué)習(xí)總結(jié)_第4頁(yè)
SQL_Server存儲(chǔ)過(guò)程學(xué)習(xí)總結(jié)_第5頁(yè)
資源描述:

《SQL_Server存儲(chǔ)過(guò)程學(xué)習(xí)總結(jié)》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)

1、SQLServer數(shù)據(jù)庫(kù):存儲(chǔ)過(guò)程學(xué)習(xí)總結(jié)一、SQLServer生成唯一值的方法NEWID()--SQLServer中生成唯一序列值的函數(shù)。SYS_GUID()--Oracle中生成唯一序列值的函數(shù)。二、事務(wù)的應(yīng)用TransactionSQLServer中的Transaction,需顯示開(kāi)啟,提交/回滾,且一個(gè)Transaction必須要有CommitTransaction/RollbackTransaction。且Commit/Rollback一定要在return之前。在存儲(chǔ)過(guò)程中試用Transaction的示例:IFEXISTS(SELECT*FROMSYSOBJECTSWHEREna

2、me='my_sp_test'ANDTYPE='P')BEGINDROPPROCEDUREmy_sp_test;END;GOcreateproceduremy_sp_test@iint,@outstrvarchar(100)outasbegintrybegintransaction--事務(wù)開(kāi)啟declare@jint;if@i<10beginset@outstr='直接Return,并未Commit或RollbackTransaction.';return;endelsebeginset@outstr='拋出自定義異常,并在異常捕獲處RollbackTransaction.';RAISER

3、ROR(66666,--Messageid.16,--Severity,1--State,);end;committransaction;--提交事務(wù)endtrybegincatchif@@ERROR=66666begin--判斷是否存在開(kāi)啟的事務(wù),避免如果事務(wù)在這之前已提交或者已回滾,再次回滾會(huì)拋異常if(@@TRANCOUNT<>0)beginrollbacktransaction;--事務(wù)回滾end;end;return;endcatch;go測(cè)試存儲(chǔ)過(guò)程,如下代碼:/*第一個(gè)入?yún)?12,不會(huì)產(chǎn)生異常*/DECLARE@OUTSTR_testVARCHAR(100);execdbo.

4、my_sp_test12,@OUTSTR_testoutprint@OUTSTR_test;--@OUTSTR_test='拋出自定義異常,并在異常捕獲處RollbackTransaction.'/*第一個(gè)入?yún)?8,執(zhí)行后則會(huì)出現(xiàn)異常,異常信息如下行*'EXECUTE后的事務(wù)計(jì)數(shù)指示BEGIN和COMMIT語(yǔ)句的數(shù)目不匹配。上一計(jì)數(shù)=0,當(dāng)前計(jì)數(shù)=1。'*/DECLARE@OUTSTR_test_1VARCHAR(100);execdbo.my_sp_test8,@OUTSTR_test_1outprint@OUTSTR_test_1;--@OUTSTR_test_1='直接Return,

5、并未Commit或RollbackTransaction.'/*入?yún)?的測(cè)試語(yǔ)句執(zhí)行后,之所以會(huì)出現(xiàn)異常,是因?yàn)锽eginTransaction后,在之后*的代碼中未對(duì)這個(gè)Transaction進(jìn)行Commit或者Rollback的操作。*/一、游標(biāo)的應(yīng)用CursorSQLServer中的游標(biāo)聲名后,一定要顯示的釋放。若未釋放,再次執(zhí)行時(shí),則會(huì)出現(xiàn)“游標(biāo)XX已經(jīng)存在”的異常。Open游標(biāo)后,一定要顯示的Close。在存儲(chǔ)過(guò)程中試用Cursor的示例:IFEXISTS(SELECT*FROMSYSOBJECTSWHEREname='my_sp_test'ANDTYPE='P')BEGIND

6、ROPPROCEDUREmy_sp_test;END;GOcreateproceduremy_sp_test@iint,@outstrvarchar(100)outasdeclare@loginNamevarchar(100);declarecur_usercursorforselectESUS_LOGIN_NAMEfromES_USERwhereESUS_ESCO_ID='100004';begintryopencur_user;--開(kāi)啟游標(biāo)fetchnextfromcur_userinto@loginName;while@@FETCH_STATUS=0beginif(@i>=10)be

7、ginset@outstr='loginname:'+@loginName;RAISERROR(66666,--Messageid.16,--Severity,1--State,);endelseif(@i<10)beginset@outstr='loginname:'+@loginName;end;fetchnextfromcur_userinto@loginName;end;closecur_user;--關(guān)閉游標(biāo)r

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。