您的位置:首页 > 数据库

SQL入门经典(八)之存储过程

2016-06-25 11:43 246 查看
存储过程(stored procedure)有时候称为sproc,它是真正的脚本-或者更准确的说,他是批处理(batch)-它存储于数据库中,而不是淡出的文件中。无论如何,这个比较并不是很确定。存储过程有输出参数,输入参数已及返回值等。而脚本不会有这些内容。

存储过程基本语法:CREATE PROCEDURE|PROC <sproc name>

[<parameter name> <data type> [VARYING][<default value>] [OUTPUT]],

[<parameter name> <data type> [VARYING][<default value>] [OUTPUT]]

[........,n]

[WITH PECOMPILE|ENCRYPTION|EXECUTE AS{ CALLER |SELF|OWNER|<'user name '>}]

[ FOR REPLICATION]

AS

<code>|EXTERNAL NAME<assembly name>.<assembly class>.<method>

试一试最简单基本存储过程:

USE AdventureWorks
GO --切换到AdventureWorks数据库

CREATE PROCEDURE sp_Employee
AS
SELECT * FROM HumanResources.Employee

GO--提前处理语句。防止下面EXEC sp_Employee抛出错误

exec sp_Employee


CREATE proc sp_jx
@size int ,
@count int output
AS
declare @temp_s int ;
declare @temp_c int ;
if @size >=1
begin
select @temp_s=@size-1;
exec sp_jx @temp_s,@temp_c output
select @count= @size*@temp_c;
end
else
select @count=1
return
GO
declare @count int
exec sp_jx 5,@count output
select @count

exec sp_jx 32,@count output
select @count


View Code



使用存储过程的时机:(优点)

1.通常更佳的性能。

2.可以作为安全隔离层(控制数据访问和跟新方式)

3.可以重用代码

4.划分代码

5.根据在运行时建立的动态而可以灵活执行

缺点

移植性差,不能跨平台移植

在一些情况下可能因为错误的执行计划而被锁定(实际影响性能).

未完待续。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: