T-SQL 储存过程

1.储存定义,特点,类型

储存过程:
就是预先编译和优化并储存于数据库的过程,通常在SQL Server 服务器预先定义并编译成可执行计划,调用它时允许接收参数,返回状态值和参数值,并允许嵌套调用。
特点:
增强SQL语言的功能和灵活性,保证数据的安全性和完整性,更快的执行速度。
存储过程的类型:
1.系统存储过程(定义在系统数据库master中,前缀:“sp_”)
2 .扩展存储过程(使用编程语言创见的dll文件)
3 .CLR存储过程

存储过程在命名时同样采用pascal命名规则,全部大写,以’'UP_表名_操作"的形式命名。

创建储存过程

1.使用SSMS创建:
再使用的数据库下–>可编程性–>储存过程–>新建储存过程
也可以在此修改,添加,删除;
2.使用T-SQL创建储存过程
  use StudentManagement
  go
  create procedure up_teacher_info    --创建储存过程
  as
  select * from Teacher where Teacher_Sex='男'
  go
  up_teacher_info   使用储存过程(或exec up_teacher_info )
  drop procedure up_teacher_info  --删除存储过程
  go
3.创建传入参数的储存过程
	create procedure up_COURSE_INFO  --创建传入参数的储存过程
	@scname varchar(30)
	as
	select     Student.Student_No,student_Name,Course_Name,
	SelectCourse_Score
	from Student,Course,SelectCourse
	where Student.Student_No=SelectCourse.SelectCourse_StudentNo 
	and SelectCourse.SelectCourse_CourseNo=Course.Course_No 
	and Course_Name=@scname
	go
	exec  up_COURSE_INFO @scname='数据库技术'
4.创建传入参数和传出参数的储存过程
  	create  procedure  up_course_count        --创建传入参数和传出参数的储存过程
  	@scname varchar(30),@ccount int output
  	as
  	select COUNT(*)
  	from SelectCourse,Course
  	where SelectCourse.SelectCourse_CourseNo=Course.Course_No
      and Course.Course_Name=@scname
      GO
5.按参传值(提倡)

	declare @ccount int
	exec up_course_count @scname='数据库技术',@ccount=@ccount output 
	select '选修数据库技术课程的人数为:',@ccount
	go

--按位传值

 	declare @ccount in
    exec up_course_count '数据库技术',@ccount output 
    select '选修数据库技术课程的人数为:',@ccount
	go
6.查看储存过程
  exec sp_helptext up_course_info
  exec sp_help up_course_info
  exec sp_depends up_course_info
  exec sp_stored_procedures up_course_info
  go
7.修改储存过程
  --可以通过ssms修改,方便
  alter procedure up_course_info
  @sno char(6)
  as
  select Student.Student_Name,Student.Student_No,Course.Course_Name,
  SelectCourse.SelectCourse_Score
  from Student,SelectCourse,Course
  where Student.Student_No=SelectCourse.SelectCourse_StudentNo
   and SelectCourse.SelectCourse_CourseNo=Course.Course_No
  and Student.Student_No=@sno
  go
  exec up_course_info @sno='200702'
  go
8.删除存储过程
drop procedure up_course_info
drop procedure up_course_count
go
例题:
ALTER procedure up_course_info
  @sno char(6)=null
  as
  if @sno is null
  	begin
  		select Student.Student_Name,Student.Student_No,Course.Course_Name,
  		SelectCourse.SelectCourse_Score
  		from Student,SelectCourse,Course
  		where Student.Student_No=SelectCourse.SelectCourse_StudentNo 
  		and SelectCourse.SelectCourse_CourseNo=Course.Course_No
  	end
  else
  	begin
  		select Student.Student_Name,Student.Student_No,Course.Course_Name,
  		SelectCourse.SelectCourse_Score
  		from Student,SelectCourse,Course
  		where Student.Student_No=SelectCourse.SelectCourse_StudentNo and SelectCourse.SelectCourse_CourseNo=Course.Course_No
  		and Student.Student_No=@sno
  	end
  
  
  GO
  exec up_course_info @sno='200702'
  exec up_course_info 

你可能感兴趣的:(T-SQL 储存过程)