SQL_Server存储过程学习总结

SQL_Server存储过程学习总结

ID:38582530

大小:182.50 KB

页数:12页

时间:2019-06-15

SQL_Server存储过程学习总结_第1页
SQL_Server存储过程学习总结_第2页
SQL_Server存储过程学习总结_第3页
SQL_Server存储过程学习总结_第4页
SQL_Server存储过程学习总结_第5页
资源描述:

《SQL_Server存储过程学习总结》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、SQLServer数据库:存储过程学习总结一、SQLServer生成唯一值的方法NEWID()--SQLServer中生成唯一序列值的函数。SYS_GUID()--Oracle中生成唯一序列值的函数。二、事务的应用TransactionSQLServer中的Transaction,需显示开启,提交/回滚,且一个Transaction必须要有CommitTransaction/RollbackTransaction。且Commit/Rollback一定要在return之前。在存储过程中试用Transaction的示例:IFEXISTS(SELECT*FROMSYSOBJECTSWHEREna

2、me='my_sp_test'ANDTYPE='P')BEGINDROPPROCEDUREmy_sp_test;END;GOcreateproceduremy_sp_test@iint,@outstrvarchar(100)outasbegintrybegintransaction--事务开启declare@jint;if@i<10beginset@outstr='直接Return,并未Commit或RollbackTransaction.';return;endelsebeginset@outstr='抛出自定义异常,并在异常捕获处RollbackTransaction.';RAISER

3、ROR(66666,--Messageid.16,--Severity,1--State,);end;committransaction;--提交事务endtrybegincatchif@@ERROR=66666begin--判断是否存在开启的事务,避免如果事务在这之前已提交或者已回滚,再次回滚会抛异常if(@@TRANCOUNT<>0)beginrollbacktransaction;--事务回滚end;end;return;endcatch;go测试存储过程,如下代码:/*第一个入参=12,不会产生异常*/DECLARE@OUTSTR_testVARCHAR(100);execdbo.

4、my_sp_test12,@OUTSTR_testoutprint@OUTSTR_test;--@OUTSTR_test='抛出自定义异常,并在异常捕获处RollbackTransaction.'/*第一个入参=8,执行后则会出现异常,异常信息如下行*'EXECUTE后的事务计数指示BEGIN和COMMIT语句的数目不匹配。上一计数=0,当前计数=1。'*/DECLARE@OUTSTR_test_1VARCHAR(100);execdbo.my_sp_test8,@OUTSTR_test_1outprint@OUTSTR_test_1;--@OUTSTR_test_1='直接Return,

5、并未Commit或RollbackTransaction.'/*入参为8的测试语句执行后,之所以会出现异常,是因为BeginTransaction后,在之后*的代码中未对这个Transaction进行Commit或者Rollback的操作。*/一、游标的应用CursorSQLServer中的游标声名后,一定要显示的释放。若未释放,再次执行时,则会出现“游标XX已经存在”的异常。Open游标后,一定要显示的Close。在存储过程中试用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;--开启游标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;--关闭游标r

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。