前面关系数据库SQL之可编程性函数(用户自定义函数)一文提到关系型数据库提供了可编程性的函数、存储过程、事务、触发器及游标,前文已介绍了函数,本文来介绍一下存储过程的建立、执行、删除。(仍是之前文中银行系统为例)sql
存储过程是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户经过指定存储过程的名称并给出参数(若是该存储过程带有参数)来执行。数据库
--建立存储过程 CREATE PROC[EDURE] <存储过程名称> -- 添加存储过程所需的参数 [ <@参数1> <参数类型1> [= 默认值] [OUTPUT], …… <@参数n> <参数类型n> [= 默认值] [IN|OUT|OUTPUT] ] AS BEGIN -- 这里面能够写为变量赋值语句 SQL语句块 END
注意:编程
其中存储过程名不能超过128个字,每一个存储过程当中最多设定1024个参数;网络
存储过程所需的参数无关紧要,若是有参数为带参数存储过程,没有参数就是无参数存储过程;函数
带参数存储过程参数后面有关键字
OUT|OUTPUT
为带输出参数存储过程;spa[IN|OUT|OUTPUT]介绍:code
IN:在参数后面加了
IN
关键字的表示为输入参数,默认的状况就是输入参数;图片OUT:在参数后面加了
OUT
关键字的表示为输出参数;事务OUTPUT:在参数后面加了
OUTPUT
关键字表示为输入输出参数,既是传入参数也是输出参数。ip
--调用存储过程 EXEC<存储过程名称> [参数列表]
--删除存储过程 DROP PROC[EDURE] <存储过程名称>
/* * 查询交易信息表中总的交易金额,以及支取和存入的总金额,并打印出来 */ --判断存储过程是否存在 --存在则删除 if exists(select * from sysobjects where name = 'proc_getTransMoney') drop procedure proc_getTransMoney go --建立无参数存储过程 create proc proc_getTransMoney as begin declare @sum_money money --交易总额 declare @get_money money --支出总额 declare @sav_money money --存入总额 select @sum_money = sum(TransMoney) from TransInfo select @get_money = sum(TransMoney) from TransInfo where TransType = '存款' select @sav_money = sum(TransMoney) from TransInfo where TransType = '取款' print '交易总额='+ltrim(convert(char,@sum_money)) print '存入总额='+ltrim(convert(char,@sav_money)) print '支出总额='+ltrim(convert(char,@get_money)) end go --执行存储过程 exec proc_getTransMoney go /* * 查询指定帐户挂失的帐户信息 */ --判断存储过程是否存在 --存在则删除 if exists(select * from sysobjects where name = 'proc_getLostAccount') drop procedure proc_getLostAccount go --建立带参数输出存储过程 create proc proc_getLostAccount -- @CId varchar(20) OUTPUT as begin select A.CustName as 姓名, A.IDCard AS 身份证号, A.TelePhone as 电话号码, C.CardID as 银行卡号,A.Address as 地址 from AccountInfo as A inner join CardInfo as C on A.CustID = C.CustID where C.CardID =@CId AND C.IsLost = '是' end go --执行存储过程 declare @CardID varchar(20); set @CardID= '银行卡号'; exec proc_getLostAccount @CardID output; print @CardID; go
*本文就介绍到这里。
若有疑问请联系我。*
原文来自:简书