存储过程只在创建时编译,在调用时无需编译,而一般的SQL语句在每一次的调用都要进行编译,所以存储过程可以提高数据库执行速度。减少网络流量的使用。而且存储过程可以重复使用。
存储过程的语法如下
create procedure sp_name
@[参数名] [类型],@[参数名] [类型][with recompile][with encryption][with recompile,encryption]
as
begin
recompile:表示每次执行此存储过程时都重新编译一次
encryption:所创建的存储过程的内容会被加密
创建一个简单的存储过程实例。
use superMarket
go
if object_id('proc_comm_sup','p') is not null
drop procedure proc_comm_sup
go
create procedure proc_comm_sup
@supplierName varchar(50),
@supplierCode varchar(32)
as
select * from tblCommodity C
join tblSupplier S
on C.SupplierCode=S.Code
where C.SupplierCode=@supplierCode
or C.SupplierName=@supplierName
go
exec proc_comm_sup 造纸中心,zgzz
附:
OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]
object_name' [ ,'object_type' ] )
Object type:
AF = Aggregate function (CLR)
C = CHECK constraint
D = DEFAULT (constraint or stand-alone)
F = FOREIGN KEY constraint
FN = SQL scalar function
FS = Assembly (CLR) scalar-function
FT = Assembly (CLR) table-valued function
IF = SQL inline table-valued function
IT = Internal table
P = SQL Stored Procedure
PC = Assembly (CLR) stored-procedure
PG = Plan guide
PK = PRIMARY KEY constraint
R = Rule (old-style, stand-alone)
RF = Replication-filter-procedure
S = System base table
SN = Synonym
SQ = Service queue
TA = Assembly (CLR) DML trigger
TF = SQL table-valued-function
TR = SQL DML trigger
U = Table (user-defined)
UQ = UNIQUE constraint
V = View
X = Extended stored procedure