在SQL Server中使用T-SQL创建、使用、删除存储过程
我们知道在使用T-SQL编写代码时,有两种代码的存储及执行方式:一种是作为其他语言的嵌入语言使用,将T-SQL编写的代码段存储在客户端,通过客户端的程序向数据库管理系统发送相应的请求,然后数据库管理系统将结果返回客户端;另一种就是以子程序的形式将子程序模块存储在数据库中共有权限使用的用户角色反复调用。存储过程就是这样一种存储在数据库中的一种子程序。使用存储过程的好处在于可以改善数据性能(无需反复编译,一次编译多次使用)、可以支持模块化程序设计、减少网络流量的使用、增强应用程序安全性(其实也提高了数据库管理系统的安全性,因为使用存储过程,只需要给用户提供相应过程权限,过程实现全部是可控的)。存储过程作为子程序可以:接收及输出多个参数、可以包含数据库操作语句(存储过程也可以相互调用)、向调用者返回调用执行状态(成功或失败)。
以下是存储过程的简单使用示例(以下代码段仅标识流程先后顺序,并非单一“.sql”文件下使用):
/* 1、使用T-SQL语言在D盘的 “测试1”文件目录下创建student_info数据库和相应的日志文件*/
CREATE DATABASE [student_info_db] ON PRIMARY
(
NAME='student_info',
FILENAME= 'D:\测试1\student_info.mdf',
SIZE= 5120KB,
MAXSIZE= 30MB,
FILEGROWTH= 5%
)
LOG ON
(
NAME= 'student_info_log',
FILENAME= 'D:\测试1\student_info_log.ldf',
SIZE= 1024KB,
MAXSIZE= 1024MB,
FILEGROWTH= 10%
);
/* 2、使用T-SQL语言在student_info数据库中创建学生信息表 stu_info */
CREATE TABLE stu_info
(
stu_id int PRIMARY KEY, -- 学生学号,设置为主键
stu_name VARCHAR(20) NOT NULL unique, -- 学生姓名
stu_gender tinyint NOT NULL DEFAULT(1), -- 学生性别:男(1)女(2)
stu_age tinyint NOT NULL DEFAULT(0), -- 学生年龄,默认值为0
stu_grade int NOT NULL DEFAULT(-1) -- 学生成绩,默认值为-1
);
/* 3、使用T-SQL语言选中目标数据库 */
USE student_info_db
GO
/* 4、使用T-SQL语言创建存储过程用于添加学生信息 */
CREATE PROCEDURE pro_add_stu_info
@id int, @name VARCHAR(20), @gender tinyint, @age tinyint, @grade int
AS
INSERT INTO stu_info
VALUES(@id,@name,@gender,@age,@grade);
/* 5、使用T-SQL语言执行存储过程,添加学生信息 */
EXEC pro_add_stu_info12345,'郑三',1,21,99;
EXEC pro_add_stu_info12346,'王红',2,22,89;
/* 6、使用T-SQL语言删除存储过程 pro_add_stu_info*/
DROP PROC pro_add_stu_info;