博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
T-SQL查询——变量
阅读量:5282 次
发布时间:2019-06-14

本文共 1267 字,大约阅读时间需要 4 分钟。

  变量对于某一种语言是必不可少的一部分,当然对于T-SQL来讲也是一样,在简单查询中,但是对于复杂的查询或存储过程中,变量都是必不可少的一部分。

 和高级语言一样,在T-SQL中,变量按生存范围可以分为全局变量(Global Variable)和局部变量(Local Variable)

1、全局变量时有系统定义的,在整个SQL Server实例内都能访问到的变量,全部变量以@@作为第一个字符,用户只能访问,不能赋值。

2、局部变量由用户定义,生命周期只在一个批处理内有效。局部变量以@作为第一个字符,由用户自己定义和赋值。

一个简单的例子如下:

  因为全局变量仅仅是用于读取系统的一些参数,具体每个全局变量所代表的含义不一样...可google之

  局部变量的用途

   在T-SQL中,局部变量时一个存储指定数据类型单个值得对象,T-SQL中对变量的定义实际上和大多数高级语言一样。

局部变量咋使用中常常用于以下三种用途:

1、在循环语句中记录循环的次数或者用于控制循环的次数

2、用于存储流程控制语句来控制走向

3、储存存储过程或者函数的返回值

实际上,存储任何业务数据的局部变量都属于这一类应用

局部变量的声明

   局部变量的声明必须以”declare“作为关键字,变量的命名必须以”@“作为变量名的第一个字符,必须为所声明的变量提供一个数据类型和数据长度,如:

   局部变量的数据类型不能为Text,ntext和Image类型,当对于字符类型只提供数据类型没有提供数据长度时,数据长度默认为1

  一切只声明没有赋值的局部变量的初始值为”null“

局部变量的赋值

   在T-SQL中,局部变量的赋值是通过”Set“关键字和”Select“关键字实现的。

   实际上,使用set或者是select取决于下面几个因素

1、当对多个变量赋值时

     select关键字支持多个变量赋值,而set关键字只支持一次对一个值赋值

2、当赋值时表达式返回值的个数

    使用Set进行赋值时,当表达式返回多个值时,报错,而select关键字在赋值表达式值时,取最后一个,比如,假设XXX表只有一下几条数据:

当使用select关键字进行时,可以取返回值的最后一个。

3、当表达式未返回值时

    使用set对局部变量赋值时,如果赋值表达式未返回值,则局部变量为null,而select对表达式赋值时,如果表达式未返回值,则局部变量保持原值。

set关键字对局部变量赋值时ANSI标准,当在赋值语句需要引用一个数据源(表)时,使用select,除此之外,用set.

局部表变量

    局部变量是一个特殊的局部变量,和临时表不同,局部变量具有一切局部变量的特点,在查询中,因为局部变量是存在内存中,而不是硬盘中,所以速度远远快于临时表或是实际表,局部表变量最多的使用时在查询中充当多个表做连接时的中间表,比如:

这样会大大提高多表连接速度。

转自

转载于:https://www.cnblogs.com/zhijianliutang/archive/2012/01/31/2333725.html

你可能感兴趣的文章
css & input type & search icon
查看>>
C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
查看>>
语音识别中的MFCC的提取原理和MATLAB实现
查看>>
MetaWeblog API Test
查看>>
c# 文件笔记
查看>>
类和结构
查看>>
心得25--JDK新特性9-泛型1-加深介绍
查看>>
安装NVIDIA驱动时禁用自带nouveau驱动
查看>>
HDU-1255 覆盖的面积 (扫描线)
查看>>
Java 中 静态方法与非静态方法的区别
查看>>
Jenkins+ProGet+Windows Batch搭建全自动的内部包(NuGet)打包和推送及管理平台
查看>>
线程池的概念
查看>>
Java 序列化
查看>>
Java 时间处理实例
查看>>
Java 多线程编程
查看>>
Java 数组实例
查看>>
mysql启动过程
查看>>
2017前端面试题总结
查看>>
SWIFT国际资金清算系统
查看>>
站立会议第四天
查看>>