存储过程
系统存储过程
自定义存储过程
扩展存储过程
一、创建存储过程
-
创建存储过程
--例1USE SUGOCreate Procedure SelProcASSelect * From SCGO--例2USE SUGOCreate Procedure CountProcASSelect Count(*) AS 总数 From CourseGo
USE SUGOExec SelProcExec CountProc
--例1 创建 带输入参数 的存储过程USE SUGOCreate Procedure QueryById @Sno varchar(10)ASSelect *from SCWhere Sno = @SnoGO--执行GOExecute QueryById '1513032087'Execute QueryById @Sno = '1513032087'--创建 带默认参数 的存储过程USE SUGOcreate Procedure QueryById2 @Sno varchar(10) = '1513032087'ASSelect *From SCwhere Sno = @SnoGO--执行(可以不带参数, 因为有默认参数)EXecute QueryById2
--例4Use SUGOCreate Procedure QueryById3 @Sno varchar(10) = '1513032087',@Cnocount INT OUTPUT --输出参数,Sno学号选的课程数ASSelect @Cnocount = Count(SC.Cno)From SC, Studentwhere SC.Sno = Student.Sno and SC.Sno = @SnoGO--执行--必须先声明!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Declare @Sno varchar(10) = '1513032087';Declare @Cnocount int; --声明之后再执行EXEC QueryById3 @Sno, @Cnocount OUTPUTSelect '学号为' + @Sno + '选了' + Ltrim(STR(@Cnocount)) + '门课' --字符串还需要处理一下GO
1. 修改存储过程
------------管理存储过程--------------------修改存储过程exec CountProc --查询GOAlter Procedure CountProcASselect Sno, COUNT(*) AS 总数From SCGroup By Sno--查看属性GOselect OBJECT_DEFINITION(OBJECT_ID('QueryById')); --select OBJECT_DEFINITION(OBJECT_ID('存储过程名'));Exec sp_help QueryById Exec sp_helptext QueryById--删除操作GODROP procedure 存储过程
可以将参赛传递过扩展存储过程,扩展存储过程也可以返回结果和状态
--查看系统版本信息EXEC xp_msver
四、自定义函数(允许模块化程序设计)
1. 创建标量函数
--创建一个标量函数,指定学生id值,返回该学生姓名GOCreate Procedure Snotosname @Sno varchar(10) = '1513032087'ASBeginDeclare @Sname varchar(40)Select @Sname = ( Select Sname From Student where Sno = @Sno)RETURN @SnameEnd
--例1GOCreate Function getStuRecordBySex(@Ssex char(4))Returns TableReturn( select Sno, Sname, Ssex, (Sage + 2) as newAge From Student where Ssex = @Ssex)--执行这个函数--执行函数Select *From getStuRecordBySex('男')
--删除函数Drop Function getStuRecordBySex