在T-SQL中变量分为两类,包括全局变量和局部变量
局部变量:1、局部变量必须以@作为前缀。2、局部变量的使用是先声明,后赋值。 全局变量:1、全部变量必须以@@作为前缀。2、全局变量有系统定义和维护,只能读取不能修改全局变量的值。
???????????????????????????????????? SQL Server2008常用的全局变量 ??变量名??????????????????????????????????????????????? 作用?? ??@@ERROR?????????????????????????????????????????????? 返回执行的上一个Transac-SQL语句的错误号 ??@@IDENTITY??????????????????????????????????????????? 返回最后插入的标识值 ??@@MAX_CONNECTIONS???????????????????????????????????? 返回SQL Server实例允许同时进行的最大用户连接数 ??@@ROWCOUNT??????????????????????????????????????????? 返回受上一语句影响的行数,如果大于20亿则使用ROWCOUNT_BIG ??@@SERVERNAME????????????????????????????????????????? 返回运行SQL Server的本地服务器的名称 ??@@SERVICENAME???????????????????????????????????????? 返回SQL Server正在运行的注册表项的名称,若当前实例为默认实例,则@@SERVICENAME 返回MSSQLSERVER ??????????????????????????????????????????????????????? 若当前实例是命名实例,则函数返回该实例名 ??@@TRANCOUNT??????????????????????????????????????????? 返回当前连接的活动事物数 ??@@LOCK_TIMEOUT??????????????????????????????????????? 返回当前会话的锁定超时设置
定义局部变量并赋值 1、声明局部变量 语法:DECLARE @varname DataType 例如:declare @varname varchar(20) 语法说明:@varname 为局部变量名,DataType为变量的数据类型 2、为局部变量赋值 语法:SET @varname=VALUE或SELECT @varname=VALUE *注意:SET关键字通常将已经确定的常量赋值给局部变量。SELECT关键字通常将从数据库中查询出的结果赋值给局部变量, 前提是查询的结果必须和变量类型保持一致,或者是可以自动转换的类型,如果查询的结果超过一条记录,则取最后一条记录 值赋给局部变量。
TABLE数据类型 T-SQL中的变量类型可以是SQL Server中除了TEXT、TEXT、IMAGE外的所有类型,较为特殊的如TABLE类型。TABLE类型定义的变量和普通 的表结构完全相同,因此该类型变量与临时表的作用相似 实例如下: --TABLE类型举例 DECLARE @MyTable TABLE(ACCOUNT_NAME varchar(20),CODE varchar(18)) --为TABLE类型的变量赋值 INSERT @MyTable SELECT '诸葛亮','421025522122512251' UNION SELECT '周瑜','5522586456669988555' SELECT * FROM @MyTable --将变量的值插入ACCOUNT表中 INSERT INTO ACCOUNT SELECT ACCOUNT_NAME,CODE FROM @MyTable SELECT * FROM ACCOUNT GO
GO语句 T-SQL执行到GO语句时,SQLCMD和查询窗口将GO前面已经定义的局部变量清楚,被GO 分开的局部变量不能共享。即GO 语句是作为批处理语句的结束标记,可以控制T-SQL 变量的作用域。
SELECT在结果中输出,PRINT在消息中输出 *注意:PRINT语句数出的变量要求是字符串类型,否则将使用CONVERT函数进行转换
逻辑运算符 1、ALL关键字:主要用于比较特定值与结果集的所有值之间的逻辑关系,结果为布尔值。通常与比较运算符一起使用。 2、ANY关键字:主要用于比较特定值与结果集的所有值之间的逻辑关系,结果为布尔值。通常与比较运算符一起使用。 3、EXISTS关键字:用于判断查询的结果集是否存在特定数据,若果存在则返回TRUE,否则返回FALSE. ?
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|