存储过程
(procedure)是一组为了完成特定功能的SQL语句集合
,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行;存储过程
中可以包含逻辑控制语句和数据操纵语句(增删改查),它可以接受参数、输出参数、返回单个或多个结果集以及返回值;存储过程
在创建时就在数据库
服务器上进行了编译并存储在数据库,所以存储过程运行要比单个的SQL语句块
要快;存储过程名
和必要的参数信息
,所以在一定程度上也可以减少网络流量、简单网络负担。存储过程
即可,而不用关心存储过程
的内容,防止SQL注入;存储过程
比使用单独的SQL语句要快,如果某一操作包含大量的SQL语句代码,分别被多次执行,那么存储过程要比批处理的执行速度快得多;存储过程
创建后,可以在程序中被多次调用执行,而不必重新编写该存储过程的SQL语句;存储过程
,那么当在客户机上调用该存储过程
时,网络中传递的只是该调用语句,否则将会是多条SQL语句,从而减轻了网络流量,降低了网络负载。存储过程
;存储过程
,用户访问量大了,那么压力就丢给数据库来解决,数据库压力会过大;存储过程
,优化过于麻烦。在SQL Server
中存在很多的系统存储过程
,系统存储过程是系统创建的存储过程,目的在于能够方便的从系统表中查询信息,或完成与更新数据库表相关的管理任务,或其他的系统管理任务。
系统存储过程主要存储在master数据库中,以“sp”下划线开头的存储过程。
这些系统存储过程在master数据库中,但我们在其他数据库还是可以调用系统存储过程。
常用系统存储过程有
:
存储过程 | 含义 |
---|---|
exec sp_databases; | 查看所有数据库 |
exec sp_helpdb; | 查询数据库信息 |
exec sp_helpdb 数据名; | 查询指定数据库信息 |
exec sp_renamedb ‘旧库名’, ‘新库名’; | 更改数据库名称 |
exec sp_tables; | 查询当前数据库的所有表 |
exec sp_columns 表名; | 查看列 |
exec sp_help 表名; | 返回表的所有信息 |
exec sp_helpIndex 表名; | 查看索引 |
exec sp_helpConstraint 表名; | 约束 |
exec sp_stored_procedures; | 当前环境的所有存储 |
exec sp_helptext ‘存储过程’; | 查看存储过程源码 |
exec sp_rename ‘旧名’, ‘新名’; | 修改表、索引、列的名称 |
exec sp_defaultdb ‘旧库名’, ‘新库名’; | 更改登录名的默认数据库 |
注意: | exec 用于调用存储过程 |
① 表重命名语法:
exec sp_rename 'stu', 'stud';
② 列重命名语法:
exec sp_rename '表名.旧列名', '新列名','column';
③ 重命名索引语法:
exec sp_rename N'student.idx_cid',N'idx_cidd', N'index';
④ 查询所有存储过程语法:
补充: P 为 “存储过程”
select * from sys.objects where type = 'P';
create proc | procedure 存储名(
[{@参数 数据类型} [=默认值] [out|output],
{@参数 数据类型} [=默认值] [out|output],
....]
)
as
begin
SQL_statements
end
go
注意:
默认不写是输入变量;
out
输出变量;output
输入输出变量; 参数可以写小括号中,如果没有参数,小括号可以省略不写;
alter proc | procedure 存储过程名
as
beign
sql语句;
end
drop proc | procedure 存储过程名;
不带参数的调用
exec 存储过程名;
带参数的调用
exec 存储过程名 参数1 out|output,参数2 out|output;
Java-MyBatis
<select id="GET_MarketSupplierInfo" statementType="CALLABLE" resultType="map">
{
call 存储过程名(
#{参数名1,mode=IN,jdbcType=VARCHAR},
#{参数名2,mode=IN,jdbcType=VARCHAR}
)
}
</select>
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。