定义:
预先用SQL语句写好常用的或者很复杂的工作,并以指定的名称存储起来,那么以后想要让数据库提供与定义的存储过程相同的服务时,只需要调用它就可以自动完成完成命令。
说到这里,有人可能会问:那么存储过程只是一堆SQL语句吗?
公司为什么要添加这项技术?
那么存储过程和一般的SQL语句有什么区别呢?
存储过程的优点:
1、存储过程只是在创建时才进行编译,以后每次执行存储过程时都不需要重新编译,但一般SQL语句每次执行时都会编译一次,所以使用存储过程可以提高数据库的执行速度。
2、当对数据库进行复杂的操作时(比如对多个表进行查询),可以将这种复杂的操作用存储过程封装起来,与数据库提供的事务处理结合使用。
3.存储过程可以复用,可以减少数据库开发人员的工作量
4、安全性高,可以设置只有某个用户有权使用指定的存储过程
存储过程的类型:
1.系统存储过程:以sp_开头,用于设置系统的各种设置,获取信息,以及相关的管理工作,如获取指定对象的相关信息
2、扩展存储过程以XP_开头,用于调用操作系统提供的函数
执行..'ping 10.8.16.1'
3.用户自定义存储过程,这就是我们所说的存储过程
通用格式
[@][]
[与]{|}
作为
解释:
: 表示该参数是可返回的
与 {|}
:表示存储过程每次执行都会重新编译
:创建的存储过程的内容将被加密
喜欢:
表书内容如下
编号 标题 价格
001 C 语言简介 $30
002 报告开发 $52
示例1:查询表Book内容的存储过程
过程
作为
* 摘自书本
去
执行
例2:在表book中添加一条记录,并查询该表中所有书籍的总金额
过程
@char(10)、@(20)、@money、@money
带有---------加密
作为
书(编号,标题,价格)(@,@,@)
@=书中的总和(价格)
去
执行示例:
@钱
exec '003','控制开发指南',$100,@
print '总金额为'+(,@)
去
存储过程的返回值有3个:
1. 返回一个整数
2、返回参数的格式
3.
返回值的区别:
可以被批处理程序中的变量接收,并传回执行批处理的客户端
示例3:有两个名为Order的表,表的内容如下:
产品编号 产品名称 客户订购数量
001 钢笔30
002刷子50
003铅笔100支
命令
产品编号 客户姓名 客户存款
001 南山区 $30
002 罗湖区 $50
003 宝安区 $4
请按编号实现连接条件,将两个表连接成一个临时表,临时表只包含编号、产品名称、客户名称、存款、总金额、
总金额=押金*订单数,存储过程中放置临时表
代码如下所示:
过程
作为
A。 产品编号,a. 产品名称,b. 客户名称,b. 客户存款,a. 客户订单号* b. 客户存款总额
into # from a inner join Order b on a. =b.
如果@@错误=0
打印“好”
别的
打印“失败”
去