简介
存储过程:存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。--摘自百度百科。
存储过程详解
创建语法
代码语言:javascript复制create proc | procedure 存储名(
[{@参数 数据类型} [=默认值] [out|output],
{@参数 数据类型} [=默认值] [out|output],
....]
)
as
begin
SQL_statements
end
SQL
out | 输出变量 |
---|---|
output | 输入输出变量 |
默认 | 输入变量 |
创建实例
- 没有参数
CREATE procedure PROC_NAME
AS
begin
SELECT 1,2
end
GO
SQL
- 有参数
CREATE procedure PROC_NAME(@var int=0)
AS
begin
SELECT test_column from test_table where test_column=@var;
end
GO
或者
CREATE procedure PROC_NAME
@var int=0
AS
begin
SELECT SELECT test_column from test_table where test_column=@var;
end
GO
SQL
- 通配符参数
CREATE procedure PROC_NAME
@var varchar(128)='%a'
AS
begin
SELECT test_column from test_table where test_column like @var;
end
GO
SQL
4.输出参数
代码语言:javascript复制CREATE procedure PROC_NAME
@var int out
@var int output
AS
begin
SELECT @var=1,@var2=2
end
GO
SQL
执行语法
execute proc_name | exec proc_name
执行实例
代码语言:javascript复制对应第一个创建实例
exec proc_name;
第二个
exec proc_name
exec proc_name 2
第三个
exec proc_name
exec proc_name 'aa'
exec proc_name 'a%a'
第四个
declare @var int #输出参数传空变量接受值
declare @var2 int #输入输出参数可以传有值变量
set @var2=1
exec proc_name @var out @var2 output
select @var,@var2 #查询结果1,2
SQL
修改语法
代码语言:javascript复制ALTER proc|procedure 存储名
AS
SQL语句
GO
SQL
修改实例
代码语言:javascript复制ALTER procedure PROC_NAME
AS
SELECT 1,2,3
GO
SQL
删除语法
delete proc|procedure 存储名
删除实例
delete proc proc_name
常用的系统存储过程
代码语言:javascript复制exec sp_databases; --查看数据库
exec sp_tables; --查看表
exec sp_columns student;--查看列
exec sp_helpIndex student;--查看索引
exec sp_helpConstraint student;--约束
exec sp_stored_procedures;
exec sp_helptext 'sp_stored_procedures';--查看存储过程创建、定义语句
exec sp_rename student, stuInfo;--修改表、索引、列的名称
exec sp_renamedb myTempDB, myDB;--更改数据库名称
exec sp_defaultdb 'master', 'myDB';--更改登录名的默认数据库
exec sp_helpdb;--数据库帮助,查询数据库信息
exec sp_helpdb master;
SQL
结束语
注意:参数不能用来做表名或者列名,可以用exec函数来实现。