- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQLServer2005_存储过程
/**************存储过程*******************************/
/*
是在数据库服务器上创建、运行的一组sql语句的集合的过程程序
通常只在首次运行时编译后驻留高速缓存中,以后调用直接在高速缓存中获取
优点:
提高查询性能,减少网络流量
编译优化 执行速度快
加强安全性
类型
用户定义的存储过程
系统存储过程 系统存储过程以字符sp_开头
扩展存储过程 系统扩展存储过程以字符sp_或xp_开头
*/
--系统存储过程
--通常返回0表示成功 失败为非0值
exec sp_databases
exec sp_helpfile --返回当前数据库的文件信息
--用户定义的存储过程
--创建
--规则:
--不能包含的sql语句
create [default trigger view rule function]等
----不带参数的存储过程
create procedure proc_emp
as
select * from emp;
--调用
exec dbo.proc_emp
--带输入参数的存储过程
IF OBJECT_ID ( dbo.proc_emp2, P ) IS NOT NULL
DROP PROCEDURE dbo.proc_emp2;
GO
CREATE PROCEDURE dbo.proc_emp2
@name varchar(20) =刘德华, --指定默认值
@id int =107
AS
begin
if(@id100)
select * from emp where empName=@name or empId=@id
else
print 编号必须大于100;
end
--调用方式
exec dbo.proc_emp2
exec dbo.proc_emp2 张无忌,44
exec dbo.proc_emp2 @name=张无忌,@id=101
--带通配符输入参数的存储过程
if Object_id(dbo.proc_emp3,p) is not null
drop proc dbo.proc_emp3
go
create proc proc_emp3
@name varchar(20) =张% --指定默认值
as
select * from emp where empName like @name;
--调用
exec proc_emp3 %
exec proc_emp3 @name =刘%
exec proc_emp3
--使用输出参数的存储过程
if Object_id(dbo.proc_emp4,p) is not null
drop proc dbo.proc_emp4
go
create procedure dbo.proc_emp4
@max int output,@name varchar(20) output
as
select top 1 @name=empName,@max=pay from emp4 order by pay desc;
GO
--调用
declare @m int,@n varchar(20)
execute dbo.proc_emp4 @m output,@n out
print 薪水最高的员工:+@n + 薪水:+cast(@m as varchar(5))
--综合例子:
if exists(select * from sys.sysobjects where name=bank)
drop table bank
GO
create table bank(
customerName varchar(20),
currentMoney decimal(12,2) --当前余额
)
alter table bank
add constraint CK_currentMonalterey check(currentMoney=1.00)
GO
insert into bank values(张三,1000)
insert into bank values(李四,1)
GO
Create proc proc_bank
@a varchar(20),@b varchar(20),@m decimal,@r int output
as
begin transaction
begin try
update bank set currentMoney=curren
文档评论(0)