第8章 T-SQL程序设计基础.ppt

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 T-SQL程序设计基础

6. 利用游标修改数据 SQL Server中的UPDATE和DELETE语句也支持游标操作,它们可以通过游标修改或删除游标基表中的当前数据行。 UPDATE的语句格式如下:? UPDATE table_name SET 列名=表达式[,…n] WHERE CURRENT OF cursor_name? DELETE的语句格式如下:? DELETE FROM table_name WHERE CURRENT OF cursor_name? 说明:CURRENT OF cursor_name表示当前游标指针所指的当前行数据。CURRENT OF只能在UPDATE和DELETE语句中使用。 Page * * 【例8.42】使用游标将student表中生源地(stu_birthplace)为“哈尔滨市”和第2条记录,生源地修改为“牡丹江市”。? --将学生信息表复制到student中 SELECT * INTO student FROM 学生信息 --声明和打开游标 DECLARE xgdz CURSOR FOR SELECT * FROM student WHERE stu_birthplace=哈尔滨市 OPEN xgdz --提取两条记录,目的是为了定位到第2条记录 FETCH NEXT FROM xgdz FETCH NEXT FROM xgdz --修改生源地 UPDATE student SET stu_birthplace=牡丹江市 WHERE CURRENT OF xgdz --关闭并释放游标 CLOSE xgdz DEALLOCATE xgdz SELECT * FROM student WHERE stu_birthplace =牡丹江市 GO 【例8.43】 使用游标删除student表中第2条总学分小于14的记录。? SELECT * INTO student FROM 学生信息 SELECT * FROM student WHERE credit14 DECLARE scxf CURSOR FOR SELECT * FROM student WHERE credit14 OPEN scxf FETCH NEXT FROM scxf FETCH NEXT FROM scxf DELETE FROM student WHERE CURRENT OF scxf CLOSE scxf DEALLOCATE scxf SELECT * FROM student WHERE credit14 8.3.6 WHILE语句 利用循环语句WHILE可以有条件地多次重复执行一个Transact-SQL语句或语句块。 语法格式: WHILE 逻辑表达式 BEGIN {语句1或语句块1} [CONTINUE] {语句2或语句块2} [BREAK] {语句3或语句块3} END Page * * 【例8.20】用WHILE语句计算2的10次方。 DECLARE @MY_VAR INT,@MY_RESULT INT SET @MY_VAR=10 SET @MY_RESULT=1 WHILE @MY_VAR0 BEGIN SET @MY_RESULT=@MY_RESULT*2 SET @MY_VAR=@MY_VAR-1 END PRINT @MY_RESULT Page * * 8.3.7 RETURN语句 RETURN语句实现无条件退出执行的批处理命令、存储过程或触发器。RETURN语句可以返回一个整数给调用它的过程或应用程序,返回值0表明成功返回,保留–1到–99代表不同的出错原因。 【例8.22】 在“成绩”表中查询某学生的某科成绩是否及格。? --创建存储过程MY_TEST CREATE PROCEDURE MY_TEST @XH CHAR(10),@KCH CHAR(4) AS IF(SELECT score FROM 成绩 WHERE stu_id=@XH AND course_id=@KCH)=60 RETURN 1 ELSE RETURN 2 --调用存储过程MY_TEST,通过返回值判断是否及格 DECLARE @I INT EXEC @I=MY_TEST 2013010104,112011 IF @I=1 PRINT 及格 ELSE PRINT 不及格 Page * * 8.4 系统内置函数 8.4.1 行集函数 详见教材P204 8.4.2 聚合函数 详见教材P205 8.4.3 标量函数 详见教材P205始 Page * * 8.5 用户自定义函数 8.5.1 用户自定义函数的创建与调用 用户定义函数可以有输入参数并返回值,但没有

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档