首先声明:这个是我尽力自己做的,不能保证百分之百正确,毕竟老师没发答案给我对
习题四
- 一、选择题
- 二、判断题
- 三、 操作题
一、选择题
- SQL Server 2008 提供的单行注释语句是使用( A )开始的一行内容。
 A. /* B. – C. { D. /
- 在 SQL Server 2017 中局部变量名以字符( D )开头 。
 A. * B. #C C. @@ D. @
以下关于运算符的优先级描述正确的是( C )。
A. 逻辑运算符的优先级最高
 C. + 运算符比逻辑运算符高
B. * 运算符的优先级比括号内部的高
 D. 逻辑运算符比* 运算符高
语句"SELECT DATENAME ( MONTH,getdate( )) AS 'Month Name"”的输出结果为(C )。
A. Month Name B. 当前日期 C. 当前月份 D. 当前时间
 5. 下列( A )不是 SQL 的合法常量。
 A. N’a student’ B. 0xABC C. 1998-04- 15 D. 2.0
 6. 下列说法不正确的是( C)。
 A、全局变量是由 SQL Server 系统提供并赋值的变量
 B、全局变量的引用超出作用域会出错
 C、可在程序中用全局变量测试系统的设定值
 D、引用全局变量时必须以@@开头。
 7. 在 SQL Server 中的 Case……End 语句属于(C)。
 A、顺序结构 B、循环结构 C、分支结构 D、语句块结构
 8. 下列说法错误的是( B )。
 A. 语句体包含一个以上语句需要采用 BEGIN … . END
 B. 多重分支只能用 CASE 语句
 C. WHILE 中循环体可以一次不执行
 D. 注释内容不会产生任何动作
 9. 关于循环说法错误的是( B )。
 A. GOTO 语句可以跳出多重循环
B. CONTINUE 语句跳过循环体没有执行的其他语句
 C. BREAK 语句跳出当前最内层循环
 D. RETURN 跳到最外面循环
- 下面程序段的执行结果为( Declare @m int,@n int Select @m=0, @n=0 While @m<30
 Begin
 Set @n=@n+3
 Set @m=@m+@n End
 Select @m, @n
 A 、30 12 B 、30 11
(A)
C 、33 9 D 、30 10
- 下面程序段的执行结果为( C )
 Declare @x int
 Set @x=9
 Print
 Case
 When @X>10 Then ‘Ok1’
 When @X>20 Then ‘Ok2’
 Else ‘Ok3’
 End
 A 、 Ok1 B 、Ok2 C 、Ok3
 D 、Ok1 Ok2 Ok3
二、判断题
- 错 在循环结构中,循环头 WHILE 的条件判定后,一定会执行循环体。
- 对 分支语句和循环语句各自可以嵌套, 也可以相互嵌套。
- 对 PRINT 语句一次可以输出若干个常量或表达式的值。
- 对 局部变量可以保存单个特定类型数据值的对象。
- 对 全局变量必须先用declare 语句定义后才可以使用。
- 对 datetime 常量和decimal 常量都必须用单引号括起来。
- 错 一个 SET 语句只能给一个局部变量赋值,而一个 select 语句可为多个局部变量赋值。
- 错 变量主要是保存程序输出的数据,程序结束后这些数据永久地存储在外存中。
- 对 局部变量是用户自定义的,全局变量的系统提供的。
- 错 作为全局变量,任何程序均可随时调用
三、 操作题
定义用户变量today,并使用一条 SET语句和一条 SELECT 语句把当前的日期赋值给它。
DECLARE @today
 SET @today=GETDATE();
 SELECT @today;
利用 Transact-SQL 语句声明一个长度为 16 的 nchar 型变量 bookname,并赋初值为“SQL
Server 数据库编程”。
 DECLARE @bookname nchar(16)
 SET @bookname=’SQL’
 3. 使用循环计算一个数的阶乘。
 DECLARE @s, @i,@m
 SET @s=100
 SET @i=1
 SET @m=1
 WHILE(@i<=100)
 BEGIN
 SET @m=@m*@i
 END
 SET @i=@i+1
 END
 PRINT @m
 4. 编程计算两个任意日期的时间差。
 DECLARE @day1,@day2,@daysum
 SET @day1= GETDATE()
 SET @day2= GETDATE()
 SELECT datediff(DAY,day1 ,day2) as daysum
 PRINT @daysum
 5. 编程求 50~100 之间所有能被 3 整除的奇数之和。
 DECLARE @a,@b
 SET @a=50
 SET @b=0
 WHILE(@a<=100)
 IF @a%2!=0 AND @a%3==0
 BEGIN
 @b=@b+@a
 END
 ENG
 PRINT @b
 6. 判定一个整数 N 是否是素数(用小于 N 的整数依次除 N)
 CREACT FUNCTION S(@a int)
 RETURNS TINYINT
 as
 BEGIN
 IF @a <=1
 RETURN 0
 DECLRAE @max,@b
 SET @max = @a -1
 SET @b = 2
 WHILE @b < @max
 BEGIN
 DECLARE @max2 ,@c
 SET @max2 = @c
 SET @c = @b
 WHILE @c< @max2
 BEGIN
 IF @c * @b = @a
 RETURN 0
 SET @c = @c + 1
 END
 SET @b = @b+ 1
 END
 RETURN 1
 END
 PRINT S
                










