如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
SQLServer第5章数据库编程5.1存储过程的创建与管理5.2函数的创建与管理3.创建并执行多语句表值函数创建多语句表值函数的基本语法如下所示。CREATEFUNCTION[SchemaName.]FunctionName([{@parameterDataType}[=Default][,...n]])RETURNS@ReturnVariableTABLE<TableTypeDefinition>[WITH{ENCRYPTION|SCHEMABINDING|ENCRYPTION,SCHEMABINDING}]ASBEGINFunctionBodyRETURNEND5.2.2管理函数5.3触发器的创建与管理5.3.1DML触发器例在数据库BlueSkyDB的Categories表上创建一个AFTER触发器,当向Categories表中插入一条类别记录或更新一条类别记录的类别名称categoryName时,新记录的类别名称categoryName必须在Test数据库中的Categories表中存在。5.3.2DDL触发器5.3.3管理触发器(2)删除触发器可以使用DROPTRIGGER命令删除触发器。5.4游标的创建与管理5.4.1使用游标的步骤例如以下执行过程:(1)声明一个游标(2)打开游标(3)读取游标(4)BEGINTRANSATION(5)数据处理(6)COMMITTRANSATION(6)回到步骤(3)5.4.2游标定位修改和删除操作语法格式:游标定位修改UPDATE语句的格式如下UPDATE表名SET子句WHERECURRENTOF{{[GLOBAL]游标名}|游标变量}游标定位删除DELETE语句的格式为如下DELETEFROM表名WHERECURRENTOF{{[GLOBAL]游标名}|游标变量}将sno等于S060109的记录smtel改为13888320247,城市改为天津5.5应用实例分析DECLARE@tb_existINTSET@tb_exist=0IFEXISTS(SELECT*FROMsysobjectsWHEREname='Enrollment'ANDxtype='U')SET@tb_exist=@tb_exist|1IFEXISTS(SELECT*FROMsysobjectsWHEREname='Offering'ANDxtype='U')SET@tb_exist=@tb_exist|2IFEXISTS(SELECT*FROMsysobjectsWHEREname='Student'ANDxtype='U')SET@tb_exist=@tb_exist|4IFEXISTS(SELECT*FROMsysobjectsWHEREname='Course'ANDxtype='U')SET@tb_exist=@tb_exist|8IFEXISTS(SELECT*FROMsysobjectsWHEREname='Teacher'ANDxtype='U')SET@tb_exist=@tb_exist|16IF@tb_exist!=31BEGIN--有一些表不存在PRINT'由于下列关系表不存在,因此插入元组失败!'IF(@tb_exist&1)=0PRINT'Enrollment'IF(@tb_exist&2)=0PRINT'Offering'IF(@tb_exist&4)=0PRINT'Student'IF(@tb_exist&8)=0PRINT'Course'IF(@tb_exist&16)=0PRINT'Teacher'ENDELSEBEGIN--五张表都存在IFEXISTS(SELECT*FROMEnrollment)DELETEEnrollmentIFEXISTS(SELECT*FROMOffering)DELETEOfferingIFEXISTS(SELECT*FROMStudent)DELETEStudentIFEXISTS(SELECT*FROMCourse)DELETECourseIFEXISTS(SELECT*FROMTeacher)DELETETeacherINSERTINTOStudentVALUES('S060101','******19880526***','王东民','男','135***11','杭州','计算机','信息学院',160)INSERTINTOStudentVALUES('S060102','******19891001***','张小芬','女','131***11','宁波','计算机','信息学院',160)INSERTIN