存储过程----sqlserver

2023-05-18 14:22:33 浏览数 (2)

简介

存储过程:存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。--摘自百度百科。

存储过程详解

创建语法

代码语言:javascript复制
create proc | procedure 存储名(
  [{@参数 数据类型} [=默认值] [out|output],
   {@参数 数据类型} [=默认值] [out|output],
  ....]
)
as
begin
   SQL_statements
end

SQL

out

输出变量

output

输入输出变量

默认

输入变量

创建实例

  1. 没有参数
代码语言:javascript复制
CREATE procedure PROC_NAME
AS
begin
   SELECT 1,2
end
GO

SQL

  1. 有参数
代码语言:javascript复制
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

  1. 通配符参数
代码语言:javascript复制
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函数来实现。

0 人点赞