SQL Server存储过程实例

来源:互联网 发布:gps航迹编辑软件 编辑:程序博客网 时间:2024/05/22 18:20

SQL 存储过程实例

存储过程是由过程化SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中。类似于函数,使用时只需调用即可。

使用存储过程有以下优点:

1、实现了SQL语句的可复用性

2、存储过程降低了客户机和服务器之间的通信量

3、方便实施企业规划


存储过程的创建一般格式

GO

CREATE PROC proc_name(参数表)

AS

SQL语句

GO

这里使用之前创建好的学生数据库,在该数据库的表上创建存储过程


①创建一个带输入参数的存储过程proc_student,其中的输入参数用于接收课程号,默认值为“C601”,然后在SC表中查询该课成绩不及格的学生学号,
 接着在student表中查找这些学生的基本信息,包括学号、姓名、性别和所在系信息,最后输出。
 
USE STUDENTIF OBJECT_ID ('proc_student','P') IS NOT NULL  /*如果存在该存储过程,则删除之*/ DROP PROCEDURE proc_student;GO/*存储过程必须从批处理的第一条开始*/CREATE PROC proc_student(@cno char(4))ASBEGIN SET NOCOUNT ON;  /*阻止在结果集中返回可显示受 Transact-SQL 语句或存储过程影响的行计数的消息*/ SELECT * FROM Student  WHERE Sno IN (  SELECT sno FROM SC WHERE Cno=@cno AND Grade<60 )ENDGOEXEC proc_student'C601'/*执行该存储过程*/




②创建一个为student表添加学生记录的存储过程Proc_AddStudent。

IF OBJECT_ID ('Proc_AddStudent','P') IS NOT NULL DROP PROCEDURE Proc_AddStudent;GOCREATE PROC Proc_AddStudent(@Sno char(4),@SName nvarchar(10),@Sex char(2),@Age int,@SNative varchar(20),@Department varchar(10),@SAddress varchar(20))ASINSERT INTO Student VALUES(@Sno,@SName,@Sex,@Age,@SNative,@Department,@SAddress)GOEXEC Proc_AddStudent '1802','张华','男',22,'上海','数计系',NULL;SELECT *FROM Student


③创建一个存储过程Proc_DelStudent删除Student表中指定学号的记录。

IF OBJECT_ID('Proc_DelStudent','P') IS NOT NULL DROP PROCEDURE Proc_DelStudent;SELECT *FROM Student WHERE Sno='1802' GO CREATE PROC Proc_DelStudent(@Sno char(4)) AS DELETE  FROM Student WHERE Sno=@SnoGOEXEC Proc_DelStudent '1802'    --执行删除学号为1802的学生 事务SELECT *FROM Student WHERE Sno='1802'

在查询命令的窗口中输入DROP PROCEDURE语句,删除存储过程。

DROP PROCEDURE proc_student
DROP PROCEDURE Proc_AddStudent
DROP PROCEDURE Proc_DelStudent

0 0