第四章:1、SQL Server 编程语言
2021/11/5 19:16:34
本文主要是介绍第四章:1、SQL Server 编程语言,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
SQL Server 编程语言T-SQL
- 4.1.1 变量
- 4.1.2 显示信息
- 4.1.3 注释语句
- 4.1.4 流程控制语句
4.1.1 变量
-
定义:
- 变量是SQL Server 中由系统或用户定义的可赋值的条件,分为全局变量和局部变量。
- 全局变量不能由用户定义,也不能被显示地赋值或声明,其名称以两个@字符(即@@)开头。
-
声明格式:
-
格式:
Declare @局部变量名 数据类型[, @局部变量名 数据类型 ,···]
在同一个Declare语句中可以同时声明多个变量,变量之间用逗号隔开。 -
例子:
Declare @variable1 int,@variable2 datetime
-
-
赋值语句:
- 赋值语句SET:
采用SET语句的语法格式为:
SET @变量名 = 表达式 - 赋值语句SELECT:
采用SETECT语句的语句格式为:
SELECT @变量名 = 表达式
或
SELECT @变量名 = 列名或表达式[,@变量名2 = 列名或表达式, ···]
FROM 表名
条件表达式
如果SELECT语句返回多个数值,则局部变量取最后一个返回值。
- 赋值语句SET:
4.1.2 显示信息
- 概念:
在执行SQL语句的过程中,如果需要为用户或应用程序提供信息,则可以使用PRINT语句或RAISERROR语句。 - PRINT语句:
- 作用:
PRINT语句用于在指定设备上(显示器)显示信息,可以显示ASCⅡ字符串或变量,可以输出的数据类型只有char,nchar,varchar,nvarchar,所输出的字符串可以用“+”连接。 - 例子:
PRINT ‘你好,现在是’+CAST(year(getdate())as varchar(10))+‘年!’; - 注意:
使用PRINT语句只能显示字符数据类型,如果是非字符类型,则需要**使用COUVERT()或者CAST()**函数进行转换。
- 作用:
- RAISERROR语句:
- 作用:
RAISERROR语句用于在SQL Server返回错误消息的同时返回用户指定的信息,它设置了一个系统标记,记录产生的错误。 - 语法:
RAISERROR(<错误号>|<‘错误消息’>,[严重度][,状态[,参数1][,参数2]])
错误号是整型表达式,是用户指定的错误或信息号,取值范围为50 000~2 147 483 647,最后一个错误代码存储在全局变量@@ERROR中。错误信息用于指定用户定义的错误信息,文本最长为255个字符,严重度默认为16。
- 作用:
4.1.3 注释语句
- 语法:
/* 注释文本*/(多行注释) 或 - - 注释文本(单行注释)
4.1.4 流程控制语句
-
BEGIN···END语句:
-
描述:
使用BEGIN···END语句可以将多条SQL语句封装起来,形成一个语句块,使这些语句作为一个整体执行。 -
格式:
BEGIN 语句 ··· END
-
-
IF···ELSE语句:
- 描述:
IF···ELSE语句是条件判断语句,根据表达式的真假选择执行某个语句或者语句块。 - 语法:
IF 条件表达式 语句 [ELSE[IF 条件表达式] 语句]
- 例子:在电力抢修工程数据库中,如果Stock表中存在库存量低于1的物资,就显示文本“the amount is not enough!”,否则显示所有物资信息。其语法形式如下:
IF exists (Select * from Stock where amount < 1 ) PRINT ' the amount is not enough! ' ELSE begin SELECT * FROM Stock end
- 注意:IF语句常与关键字exists 结合使用,用于检测是否存在满足条件的记录,只要检测有一行记录存在就为真。
- 描述:
-
WHILE循环语句:
- 描述:
在WHILE语句中,还可以使用BREAK和CONTINUE使程序从循环中跳出。BREAK语句在程序中跳出以后接着执行END后面的第一条语句。CONTINUE语句使程序跳过循环内COUNTUNE语句后面的语句,重新判断逻辑条件,如果满足条件,则重新执行循环体内的SQL语句。 - 语法:
WHIlE 逻辑表达式 语句
- 例子:将Stock表中所有物资的单价增加10%,直到有一个物资单价超过15000或单价总和超过50000为止。其语法形式如下:
WHILE (SELECT SUM(unit) FROM stock)<50000 BEGIN UPDATE stock SET nuit = unit * 1.1 IF EXISTS (SELECT * FROM stock WHERE unit > 15000) Break ELSE CONTINUE END
- 描述:
-
GOTO语句:
- 描述:
使用GOTO语句可以使SQL语句的执行流程无条件地转移到指定的标号位置,GOTO语句和标号可以用在用户巨快,批处理和存储过程中,标号的命名符合标识符命名规则。GOTO语句经常用在WHILE和IF语句中,以跳出循环或分支处理。 - 语法:
GOTO lable ··· lable;
- 描述:
-
WAITFOR语句:
- 描述:
WAITFOR语句可以在某一个时刻或某一个时间间隔之后执行SQl语句、语句块、存储过程等。 - 语法:
WAITFRO{DELAY'时间’|TIME‘时间’} 其中,DELAY表示等候由“时间‘参数指定的时间间隔;TIME表示等候到指定的”时间“为止。 时间参数的数据类型为datetime,但不带日期,格式为”hh.mm.ss“。
- 例子:使用WAITFOR语句表示等候一分钟后显示Stock表,等到12:00:00时显示Salvaging表。
WAITFOR DELAY ‘00:01:00’ SELECT * FROM Stock WAITFOR TIME ‘12:00:00’ SELECT * FROM Salvaging
- 描述:
-
CASE语句:
- 描述:
CASE语句用于根据多个分支条件确定执行内容。CASE语句列出一个或多个分支条件,并对每个分支条件给出候选值。
然后按顺序测试分支条件是否得到满足,一旦有一个分支条件满足,CASE语句就将该条件对应的候选值返回。 - 格式一:
CASE<表达式> WHEN<条件表达式1>THEN<表达式1> [WHEN<条件表达式2>THEN<表达式2>[···]] [ELSE<表达式n>] END
- 格式一例子:用CASE语句的格式一实现:在堆Stock表的查询中,当仓库号的值是“供电局1#仓库”、“供电局2#仓库”、“供电局3#仓库”时分别返回“北京”、“上海”、“广州”,否则返回“未知”。
SELECT mat_num,mat_name,speci,warehouse=CASE warehouse WHEN '供电局1#仓库' THEN ‘北京' WHEN '供电局2#仓库' THEN ‘上海' WHEN '供电局3#仓库' THEN ‘广州' ELSE '未知' END amount,unit,total FROM Stock
- 格式二:
CASE WHEN<条件表达式1>THEN<表达式1> [WHEN<条件表达式2>THEN<表达式2>[···]] [ELSE<表达式n>] END
- 格式二例子:
SELECT mat_num,mat_name,speci,warehouse=CASE WHEN '供电局1#仓库' THEN ‘北京' WHEN '供电局2#仓库' THEN ‘上海' WHEN '供电局3#仓库' THEN ‘广州' ELSE '未知' END amount,unit,total FROM Stock
- 描述:
-
RETURN语句:
-
描述:
RETURN语句可以使程序从查询或存储过程返回,使用RETURN语句可以立即从当前程序结构中退出,并且RETURN后面的语句不再执行。 -
语法:
RETURN 整型表达式
-
使用情况:
一般情况下,只有存储过程中才回用到返回的整型结果,调用存储过程的语句可以根据RETURN返回的值判断下一步应该执行的操作。
-
这篇关于第四章:1、SQL Server 编程语言的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-08Docker下的SqlServer发布订阅启用
- 2023-06-05Docker安装MS SQL Server并使用Navicat远程连接
- 2023-05-25深入浅出 SQL Server CDC 数据同步
- 2023-05-12通过空间占用和执行计划了解SQL Server的行存储索引
- 2023-04-24以SQLserver为例的Dapper详细讲解
- 2022-11-30SQL server高级函数查询
- 2022-11-26SQL SERVER数据库服务器CPU不能全部利用原因分析
- 2022-11-21SQL Server 时间算差值/常用函数
- 2022-11-20调试Archery连接SQL Server提示驱动错误
- 2022-10-22SQL Server 完整、差异备份+完整、差异还原(详细讲解,规避错误)