---- 数据库中,用于存储“业务逻辑”的技术!(T-SQL代码当做数据一样保存到数据可)
语法 :
【if exists(select * from sysobjects where name = '存储过程名')】 ---- 一般语法
if object_id('存储过程名') is not null
drop procedure 存储过程名
go
create procedure 存储过程名
as
---- T-SQL逻辑
go
-----------------------------------------------------------------------------------------------------
create procedure 存储过程名 ---- 完整的语法
(
@id int = 10, --- 带有默认值的输入参数
@name varchar(20), ---输入参数
@passWord varchar(50) output --- 输出参数
)
as
select .... ----输出结果集
return -1;--只能是整数(返回处理结果)
go
【返回结果的方式】---- 输出参数、select结果集、return(整数)
输出参数方式:较适用于返回信息较少的情况
select结果集:适用数据查询需求(存储过程可以同时返回多个结果集)
return方式:较适用于没有数据返回操作(数据业务调整、更新)
存储过程的调用语法
--- 1、省略调用(按位赋值)
declare @reslut varchar(50)
exec up_GradeSubject 'S2',@reslut output
select @reslut
--- 2、完整调用(为每一值,指定参数名称)
declare @reslut varchar(50)
exec up_GradeSubject @GradeName='S2',@subjectNumber =@reslut output
select @reslut
【注意】
方式一:简洁,但是变量值必须一一对应,不允许交换次序
方式二:繁琐一些,但准确的指明每个参数赋值,赋值顺序可以任意交换
当方式一,需要给参数赋予默认值时,采用default关键字填充。如果用方式二使用默认值,只需不对该参数赋值即可
EXEC--- 将“字符串”,当做一个SQL命令来处理
declare @sql varchar(50)
set @sql = 'select * from student'
exec (@sql)