一、局部变量的定义与赋值

定义语法:

-- 声明一个局部变量
DECLARE @变量名 数据类型 -- 声明多个局部变量
DECLARE @变量名1 数据类型1, @变量名2 数据类型2

赋值语法:

SET @变量名 = 值 或 SELECT @变量名 = 值

使用 Select 赋值确保筛选出的记录只有1条。

实际的使用例子:

比如我现在有一张学生表,内容如下。

我现在有个需求,查出马小李的前面一位同学和马小李后面的一位同学,这个需求就需要使用局部变量:

-- 定义2个变量,一个保存学号,一个保存姓名
declare @stuId int, @stuName varchar(20)
-- 给姓名变量赋值
set @stuName = '马小李'
-- 查出马小李的学号并保存在学号变量中
select @stuId = StudentId from Students where StudentName = @stuName
-- 查出马小李前后的学生信息
select * from Students where StudentId = (@stuId - 1) or StudentId = (@stuId + 1)

查询结果如下:

二、SET 和 SELECT 比较

使用场景 set select
同时对多个变量赋值 不支持 支持
表达式返回多个值时 出错 将返回的最后一个值赋给变量
表达式未返回值时 变量被赋NULL值 变量保持原值

比如,根据上面的学员表,如下的使用方式有差异:

declare @stuAddress varchar(500), @stuName varchar(20)
-- set @stuAddress = '天津市南开区红磡公寓5-5-102', @stuName = '马小李' -- 不允许这样赋值
select @stuAddress = '天津市南开区红磡公寓5-5-102', @stuName = '马小李' -- 允许
-- set @stuAddress = (select StudentAddress from Students) -- 不允许
select @stuAddress = StudentAddress from Students -- 允许
set @stuAddress = (select StudentAddress from Students where 1 < 0) -- NULL值
select @stuAddress = StudentAddress from Students where 1 < 0 -- 保持原值

三、全局变量

全局变量都使用俩个@标志作为前缀。

全部变量的使用:

SQLServer —— 变量的使用的更多相关文章

  1. sqlserver 变量

    变量:分为全局变量和局部变量全部变量:以@@声明,为系统变量,所有实例都能访问,用户只能访问,不能赋值局部变量:生命周期只在一个批处理内有效, 局部变量经常使用的三种用途:1 在循环语句中记录循环的次 ...

  2. SqlServer变量

    MySql变量 => https://www.cnblogs.com/fanqisoft/p/10700669.html 全局变量 局部变量 ⒈全局变量 以@@开头,后面跟相应的字符串,全局变量 ...

  3. sqlserver变量的生周期

    在声明一个变量后,一旦遇到分号或者go,生命周期就结 DECLARE @num1 int --go ; --go print @num1; --print @num1:

  4. SQlServer 变量定义 赋值

    declare @id int declare @name char(10) ;注意:char(10)为10位,要是位数小了会让数据出错 set @id=1 select @id=1 select @ ...

  5. SQLSERVER存储过程语法详解

    CREATE PROC [ EDURE ] procedure_name [ ; number ] [ { @parameter data_type } [ VARYING ] [ = default ...

  6. SQL 使用触发器常见错误

    今天做代码审查时,看见以下一段触发器的创建脚本,我们一起来分析一下 create trigger [trigger_puClassRoomType] on [dbo].[puClassRoomType ...

  7. 6 小时 Python 入门

    6 小时 Python 入门 以下操作均在 Windows 环境下进行操作,先说明一下哈 一.安装 Python 1.官网下载 Python 进入官网(https://www.python.org), ...

  8. sqlserver 视图能否有变量

    不能,sqlserver 视图一般不能有变量,也不能带存储过程

  9. sqlserver中表变量和变量表之间区别

    sqlserver中表变量和变量表之间区别

随机推荐

  1. centos 重新编译php

    说明:系统原来通过源码安装了php7.1.0.网上找了很多彻底删除原来php的办法,执行命令php -v PHP版本信息始终都在,说明方法都无用.自己大胆做了如下尝试,成功重新编译php 查找php ...

  2. sde中的shp数据无法编辑

    最近整理空间数据库时,用sde比较多,发现在编辑sde中的数据时总是出现数据被锁或者是被其他应用程序占用.用了很多方法处理,但不是每个方法都实用.下面讲的是我在删除shp或者给shp增加字段时所遇到的 ...

  3. jeecms框架单点登录功能的实现

    单点登录的功能实现主要原理: 1: 在点击登录按钮的时候使用reponse.addCookie()方法向浏览器发送cookie: 2: 在前段拦截器中的request.getCookie()在接收到设 ...

  4. Java虚拟机系列(二)---HotSpot虚拟机对象

    都知道Java是一门面向对象的编程语言,在Java程序运行过程中,无时无刻不在创建对象,所以这节来总结一下HotSpot虚拟机中的Java对象. 一.Java虚拟机对象的创建过程. 在语义层面创建一个 ...

  5. python学习笔记3_数据载入、存储及文件格式

    一.丛mysql数据库中读取数据 import pandas as pdimport pymysqlconn = pymysql.connect( host = '***', user = '***' ...

  6. pixhawk 常见问题 持续更新

    红灯蓝灯闪,初始化中,请稍等 黄灯双闪,错误,系统拒绝解锁 黄灯闪,遥控器关闭 黄灯快速闪且滴滴响,电池保护激活 蓝灯... 未见过.... 绿灯闪: 已加锁,GPS锁定已获得. 准备解锁. 从加锁状 ...

  7. Matlab中的cell、size函数

    参考网址:http://blog.sina.com.cn/s/blog_5efed5800100exmj.html Cell函数 如果p为一个数,那么h(1)=p,是没有问题的. 如果p为一个向量,那 ...

  8. String--在内存中的表现

    创建字符串的方法有两种:   Stringstr1=”直接赋值法”          Stringstr2=new String(“通过new关键字的方法来创建”); 在执行String str1=” ...

  9. Bootstrap常见的类

    一.标题 h1,h2,h3,h4,h5,h6

  10. XML之基础和DTD解析

    本笔记可根据W3school教程学习: 首先-----了解XML文档结构.语法规范.作用 -----了解DTD约束的作用.具体约束语法 <?xml version="1.0" ...