资源描述:
《SQLServer2005_存储过程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、/**************存储过程*******************************//* 是在数据库服务器上创建、运行的一组sql语句的集合的过程程序通常只在首次运行时编译后驻留高速缓存中,以后调用直接在高速缓存中获取优点:提高查询性能,减少网络流量编译优化执行速度快加强安全性类型用户定义的存储过程系统存储过程系统存储过程以字符sp_开头扩展存储过程系统扩展存储过程以字符sp_或xp_开头*/--系统存储过程 --通常返回0表示成功失败为非0值execsp_databasesexecsp_helpfile--返回当前数据库的文件信息--用户定义的存
2、储过程--创建--规则:--不能包含的sql语句create[defaulttriggerviewrulefunction]等----不带参数的存储过程createprocedureproc_empasselect*fromemp;--调用execdbo.proc_emp--带输入参数的存储过程IFOBJECT_ID('dbo.proc_emp2','P')ISNOTNULLDROPPROCEDUREdbo.proc_emp2;GOCREATEPROCEDUREdbo.proc_emp2@namevarchar(20)='刘德华',--指定默认值@idint=107ASbeg
3、inif(@id>100)select*fromempwhereempName=@nameorempId=@idelseprint'编号必须大于100';end--调用方式execdbo.proc_emp2execdbo.proc_emp2'张无忌',44execdbo.proc_emp2@name='张无忌',@id=101--带通配符输入参数的存储过程ifObject_id('dbo.proc_emp3','p')isnotnulldropprocdbo.proc_emp3gocreateprocproc_emp3@namevarchar(20)='张%'--指定默认值a
4、sselect*fromempwhereempNamelike@name;--调用execproc_emp3'%'execproc_emp3@name='刘%'execproc_emp3--使用输出参数的存储过程ifObject_id('dbo.proc_emp4','p')isnotnulldropprocdbo.proc_emp4gocreateproceduredbo.proc_emp4@maxintoutput,@namevarchar(20)outputasselecttop1@name=empName,@max=payfromemp4orderbypaydesc;
5、GO--调用declare@mint,@nvarchar(20)executedbo.proc_emp4@moutput,@noutprint'薪水最高的员工:'+@n+'薪水:'+cast(@masvarchar(5))--综合例子:ifexists(select*fromsys.sysobjectswherename='bank')droptablebankGOcreatetablebank(customerNamevarchar(20),currentMoneydecimal(12,2)--当前余额)altertablebankaddconstraintCK_curre
6、ntMonaltereycheck(currentMoney>=1.00)GOinsertintobankvalues('张三',1000)insertintobankvalues('李四',1)GOCreateprocproc_bank@avarchar(20),@bvarchar(20),@mdecimal,@rintoutputasbegintransactionbegintryupdatebanksetcurrentMoney=currentMoney-@mwherecustomerName=@aupdatebanksetcurrentMoney=currentMon
7、ey+@mwherecustomerName=@bcommittransactionset@r=1endtrybegincatchrollbacktransactionset@r=0endcatch--调用declare@aintexecproc_bank'张三','李四',1000,@aoutputprint@aGo--withencryption--加密存储过程的定义阻止返回存储过程的定义文本createprocproc_emp5withencryptionasselect*fromemp;exec