DECLARE @varl nvarchar(30)SELECT@varl='刘丰SELECT @varl=(SELECT snameFROM studentWHERE sn0='110)SELECT @varIASNAMEGO2)局部游标变量的定义与赋值(1)局部游标变量的定义(1)局部游标变量的定义语法格式:4DECLAREL@cursorvariable_name CURSOR+..n(2))局部游标变量的赋值利用SET语句给一个游标变量赋值,有三种情况:。将一个已存在的并且赋值的游标变量的值赋给另一局部游标变量:+●将一个已申明的游标名赋给指定的局部游标变量;·申明一个游标,同时将其赋给指定的局部游标变量。上述三种情况的语法描述如下所示。语法格式:SET+@cusorvanable=*将一个已赋值的游标变量的值赋给一自标游标变量*1@cursor_variable]*将一一个已申明的游标名赋给游标变量*cursor namel*游标申明*1+(CURSOR子句)14(3)游标变量的使用步骤例如:使用游标变量(3)游标变量的使用步骤例如:使用游标变量DECLARE @st_CURSOR CURSORSET@stCURSOR=CURSORSCROLLDYNAMICFORSELECT sno,sname,class FROM studentOPEN@st CURSOR
DECLARE @var1 nvarchar(30) SELECT @var1='刘丰' SELECT @var1= (SELECT sname FROM student WHERE sno= '110' ) SELECT @var1 AS NAME GO 2)局部游标变量的定义与赋值 (1) 局部游标变量的定义 (1) 局部游标变量的定义 (3) 游标变量的使用步骤 例如:使用游标变量 (3) 游标变量的使用步骤 例如:使用游标变量 DECLARE @st_CURSOR CURSOR SET @st_CURSOR= CURSOR SCROLL DYNAMIC FOR SELECT sno,sname,class FROM student OPEN @st_CURSOR
FETCHNEXTFROM@stCURSORWHILE @@FETCH_STATUS=0FETCHNEXTFROM@stCURSORCLOSE @st_CURSORDEALLOCATE@st_CURSOR10.2运算符与表达式1.算术运算符+、=、*、/、%例:DECLARE@aint,@b intSET@a-llSET@b=3SELECT@a+@bAS'a+b@a-@bAS'a-b',@a*@bAS'a*b',@a/@bAS'a/b'.@a%@bAS'a%b2.位运算符表5.7位运算符+运算符运算规则运算名称按位与&2两个位均为1时,结果为1,否则为0+只要一个位为1,结果为1,否则为0按位或按位异惑A两个位值不同时,结果为1,否则为0例如:在maste数据库中,建立表bitop,并插入一行,然后将a字段和b字段上的值进行位运算。USE masterCREATETABLEbitoR+C+aint NOT NULL,bint NOT NULL2+INSERTbitopVALUES (168,73)SELECTa&b,alb,aabuFROMbitop+GONa(168)的二进制表示:0000010101000,b6(73)的二进制表示:00000001001001.在这两个值之间进行的位运算如下:(a&b): +0000 0000 1010 10000000 0000 0100 1001+
FETCH NEXT FROM @st_CURSOR WHILE @@FETCH_STATUS=0 FETCH NEXT FROM @st_CURSOR CLOSE @st_CURSOR DEALLOCATE @st_CURSOR 10.2 运算符与表达式 1.算术运算符 + 、-、*、/、% 例: DECLARE @a int,@b int SET @a=11 SET @b=3 SELECT @a+@b AS 'a+b',@a-@b AS 'a-b',@a*@b AS 'a*b',@a/@b AS 'a/b',@a%@b AS 'a%b' 2.位运算符 例如: 在 maste 数据库中,建立表 bitop,并插入一行,然后将 a 字段和 b 字段上 的值进行位运算
(a/b):000000001010100000000000010010010000000011101001+(anb):400000000101010000000000001001001+0000000011100001+比较运算符3.座运算符运算名称=4相等>4大于*<小于,viR大于等于AIe小于等于*不等于Ir不小于?134不大于*4.逻辑运算符运算符。运算提则AND如果两个操作数值都为TRUE,运算结果为TRUE。OR-如果两个操作数中有一个为TRUE,运算结果为TRUE。4NOT+若一个操作数值为TRUE,运算结果为FALSE,否则为TRUE。+ALL如果每个操作数值郡为TRUE,运算结果为TRUE。在一系列操作数中只要有一个为TRUE,运算结果为TRUE。ANY-如果操作数在指定的范围内,运算结果为TRUE。BETWEENEXISTS+如果子查询包含一些行,运算结果为TRUE。IN如果操作数值等于表达式列表中的一个,运算结果为TRUE。4
3. 比较运算符 例如:用于查询指定借书证号的学生在 XS 表中的信息。 4. 逻辑运算符
5.字符串联接运算符例如:多个字符串的联接SELECT(sno+space(2)+sname)AS"学号姓名'FROMstudent6.一元运算一元运算符有+(正)、一(负)和~(按位取反)三个。+、一一远运算符是大家熟悉的。对于按位取反运算符举例如下:设a的值为12(00000000001100),计算:~a的值为:11111111100117.赋值运算符指给局部变量赋值的SET和SELECT语句中使用的=”8.运算符的优先顺序运算符优先级14+(正)-(负)(按位NOT)。2*(乘)(除)%(模)+(加)(+串联)(满)3+45"、>、<、k比较运算符。(位异或)&(位与)【(位或)564NOT-7AND8、BETWEEN、IN、LIKE、OR、SOMEALL, ANY.9(赋值)。10.3流程控制语句控制语句说明·IF..ELSE+条件语句GOTO?无条件转移语句?WHILE+循环语句?CONTINUE用于重新开始下一次循环?用于退出最内层的循环BREAK+RETURN无条件返回为语句的执行设置延迟。WAITFOR+
5. 字符串联接运算符 例如:多个字符串的联接。 SELECT (sno+space(2)+sname) AS '学号 姓名' FROM student 6. 一元运算 7. 赋值运算符 指给局部变量赋值的 SET 和 SELECT 语句中使用的“=”。 8. 运算符的优先顺序 10.3 流程控制语句
10.3.1IF...ELSE语句语法格式:~条件表达式IF Boolean expresion(sql sttement statement block]【条件表达式为真时执行*1+LELSE(sql staterment statement block)]】/条件表达式为假时执行×/+t+条件表达式条件表达式NlNYBAuAtttIF语句的下一语句IF语句的下一语句t++■例如:如果3-105课程的平均成绩大于80分,显示3-105课程成绩还不错”,否则显示“3-105课程成绩一般”。IF (SELECTAVG(degree) FROM scoreWHEREcno='3-105)>80PRINT'3-105课程成绩还不错ELSEPRINT'3-105课程成绩一般10.3.2WHILE、BREAK和CONTINUE语句1.WHILE循环语句语法格式:WHILE Boolean epression[条件表达式*1+(sql_staterment statement block)[xT-SQL语句序列构成的循环体*1+各参数含义:Boolean_expression为条件表达式,其运算结果为TRUE或FALSE:
10.3.1 IF.ELSE 语句 ◼ 例如:如果 3-105 课程的平均成绩大于 80 分,显示“3-105 课程成绩还不错”,否则 显示“3-105 课程成绩一般”。 IF (SELECT AVG(degree) FROM score WHERE cno='3-105')>80 PRINT '3-105 课程成绩还不错' ELSE PRINT '3-105 课程成绩一般' 10.3.2 WHILE、BREAK 和 CONTINUE 语句 1. WHILE 循环语句