优点:
1,是sql语句集合,可以将多个sql汇集为一个存储过程,一次执行
2,预编译后保存在服务器端数据库中,效率较高
缺点:
1,功能发生改变时,proc也要维护,后期有维护成本,建议过于简单的sql不要写成存储过程
系统存储过程:master数据库中,其他库可以直接使用,不需要加数据库名
自定义存储过程:用户在特定数据库中创建的sql集合,可以传参数,可以有返回值。
调用
execute/exec
exec pro_real_holiday ‘2019-02-01’,‘2019-02-28’,‘01’–不指定参数名称,则按照该存储过程声明时参数的顺序来接收参数,
exec pro_real_holiday @date_end=‘2019-02-28’,@org_code=‘01’,@date_start=‘2019-02-01’–此时可以打乱声明顺序,它自动根据名字来对应接收参数
create/alter proc/procedure proc_name
@a int,
@b int
as
begin
select * from report_day
select * from report_day
end
exec/execute proc_name
drop proc_name
CREATE TABLE [dbo].[report_day] (
[id] int NOT NULL ,
[name] varchar(100) NULL ,
[content] varchar(100) NULL ,
[create_date] date NULL ,
[birthday] datetime NULL
)
alter proc myproc
@id int,
@name varchar(200),
@content varchar(200)
as
begin
declare @birthday datetime
set @birthday=‘2019-12-12’
delete from report_day;
insert into report_day(id,name,content,create_date,birthday)
values(@id,@name,@content,getdate(),@birthday);
select * from report_day
end
exec myproc 1, ‘kobe’, ‘mvpppppp’