关于存储过程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于存储过程相关的知识,希望对你有一定的参考价值。
问题:使用存储过程有什么优缺点?什么时候使用存储过程?为什么使用存储过程?
1、存储过程有两种参数类型,输入(默认input),输出(output)
2、存储过程一个批执行——批(go)在Sql中起一个隔断作用
3、分页存储过程的使用:
(
1、变量的声明
)
--1 create procedure GetStudentsInfo as select * from student go exec GetStudentsInfo alter procedure GetStudentsInfo as select * from student where stuSex = ‘男‘ exec GetStudentsInfo --2 /* public DataTable GetStudentsInfoByGrade(decimal mingrade, decimal maxgrade) {} */ create proc GetStudentsInfoByGrade @mingrade numeric(3,1) = 60, @maxgrade numeric(3,1) as select * from student where stuAvgrade >= @mingrade and stuAvgrade <= @maxgrade go --C#调用方法的对比:GetStudentsInfoByGrade(70,90) exec GetStudentsInfoByGrade @maxgrade = 90 go exec GetStudentsInfoByGrade 70,90 go exec GetStudentsInfoByGrade @mingrade = 80,@maxgrade = 90 go --3代输出(out)参数 /* public void GetStuAvgradeTotalAndFemaleGradeTotal(out decimal stuTotal, out decimal stuFemaleTotal) */ --储存过程有两种参数类型一种是输入参数也是默认值input另一种是输出参数叫output create procedure GetStuAvgradeTotalAndFemaleGradeTotal @stuTotal real output, @stuFemaleTotal real output As select @stuTotal = sum(stuAvgrade) from student; select @stuFemaleTotal = sum(stuAvgrade) from student where stuSex = ‘女‘ go declare @total real, @femaleTotal real exec GetStuAvgradeTotalAndFemaleGradeTotal @total output, @femaleTotal output; select @total, @femaleTotal go --4修改和加密储存过程 alter procedure GetStudentsInfo with encryption as select * from student go --5 create proc InsertStudent @stuId char(8), @stuName varchar(10), @stuSex char(2), @stuBirth smalldatetime, @stuSpeciality varchar(50), @stuAvgrade numeric(3,1), @stuDept varchar(50) as insert into student values(@stuId,@stuName,@stuSex,@stuBirth,@stuSpeciality,@stuAvgrade,@stuDept) go exec InsertStudent ‘20060214‘, ‘李刚‘,‘男‘,‘1987-07-01‘,‘网络工程‘,85.8,‘信息工程系‘ select * from student
以上是关于关于存储过程的主要内容,如果未能解决你的问题,请参考以下文章