文档介绍:第七章 T_SQL程序设计
变量
运算符
函数
流程控制语句
其它命令
用户自定义函数
变量
变量是一种语言中必不可少的组成部分。Transact-SQL语言中有两种形式的变量,一种是用户自己定义的局部变量,另外一种是系统提供的全局变量。
1. 局部变量
局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部。
局部变量可以作为计数器来计算循环执行的次数,或是控制循环执行的次数。另外,利用局部变量还可以保存数据值,以供控制流语句测试以及保存由存储过程返回的数据值等。
局部变量被引用时要在其名称前加上标志“@”,而且必须先用DECLARE命令定义后才可以使用。
(1) 声明局部变量:
DECLARE @变量名类型
(2) 局部变量的赋值:
SET @变量名=值| 表达式
或SELECT @变量名=值| 表达式
(3) 显示变量的值
print @变量名或 SELECT @变量名
(4) 举例 Declare ***@x int
Set ***@x = 10
Print ***@x
2. 全局变量
全局变量是SQL Server系统内部使用的变量,其作用范围并不仅仅局限于某一程序,而是任何程序均可以随时调用。
全局变量通常存储一些SQL Server的配置设定值和统计数据。用户可以在程序中用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值。例如:@***@ERROR表示了Transact-SQL命令执行后的状态,为0表示执行正确,否则出错。
使用全局变量时应该注意以下几点:
①全局变量不是由用户的程序定义的,它们是在服务器级定义的。
②用户只能使用预先定义的全局变量。
③引用全局变量时,必须以标记符“@@”开头。
④局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。
用@***@ERROR 检测一个特定错误:
下面的示例用@***@ERROR 在一个 UPDATE 语句中检测限制检查冲突(错误#547)。
USE pubs
GO
UPDATE authors
SET au_id = '172 32 1176‘
WHERE au_id = "172-32-1176“
IF @***@ERROR = 547 print "A check constraint violation occurred"
运算符
运算符是一些符号,它们能够用来执行算术运算、字符串连接、赋值以及在字段、常量和变量之间进行比较。在SQL Server 2000中,运算符主要有以下六大类:算术运算符、赋值运算符、位运算符、比较运算符、逻辑运算符以及字符串串联运算符。
算术运算符可以在两个表达式上执行数学运算,这两个表达式可以是数字数据类型分类的任何数据类型。算术运算符包括加(+)、减(—)、乘(*)、除(/)和取模(%)。
例如:
Declare ***@X,***@Y int
Set ***@X = 10
Set ***@Y=5
Set ***@X=***@X+***@Y-2
PRINT ***@x
Transact-SQL 中只有一个赋值运算符,即等号(=)。赋值运算符使我们能够将数据值指派给特定的对象。另外,还可以使用赋值运算符在列标题和为列定义值的表达式之间建立关系。
使用方式有两种:
SET 局部变量=值|表达式
或者
SELECT 局部变量=值|表达式