mssql sqlserver sql脚本中变量简介


摘要:
下文将详细的介绍sql脚本中变量

程序设计语言中都有常量和变量的概念,sql脚本也不例外,下文将分别讲述sqlserver中的变量

一、sql变量简介

sql变量与常量的不同之处,在于变量会随着运行过程而发生变化。

一、按作用范围区分”局部变量、全部变量”

局部变量: 通常我们将用户在程序中定义的变量,称之为局部变量
局部变量:局部变量作用范围 –变量定义开始至批处理结束的位置,一个批处理中不能重复定义相同变量。
局部变量:局部变量以@开头定义
局部变量:局部变量的作用为临时保存计算的中间结果。
————————————————————–
全局变量: 全局变量通常为系统定义
全局变量:全局变量以@@开头定义
全局变量:常为系统定义的全局信息
例:
@@version —数据库版本
@@spid —当前进程Id

二、sql变量定义方法

sqlserver中变量需先定义后赋值使用
变量定义采用declare 语句
变量定义语法:

   ---定义单个变量
   declare @变量名称 变量类型[=默认值]
   ---同时定义多个变量,变量后面使用逗号分隔
   declare @变量名称1 变量类型[=默认值],@变量名称2 变量类型[=默认值] ...
   例:
    declare @a int  
    declare @b int,@c int @d datetime ,@e decimal(10,2)

例:
declare @a int
go
set @a =100
—此处将报错,因为脚本go已经结束批处理
—此处set @a赋值,则会提示变量未定义

三、sql变量赋值

sql脚本中变量被定义后,变量被初始化null,需使用set或select为变量进行赋值

  declare @a int 
  set @a =1  ---设置变量值为1
  
  select @a =[列名] from tableName 
  ---此处将tableName中一行中的值赋值给变量@a


注意:
如果使用select对变量进行赋值时,当select中存在多行记录时,将采用最后一行所对应的结果赋值给相应的变量中。