Heim  >  Artikel  >  Datenbank  >  sql server中局部变量与全局变量的 申明与赋值

sql server中局部变量与全局变量的 申明与赋值

WBOY
WBOYOriginal
2016-06-07 17:48:091680Durchsuche

局部变量用一个@标识,全局变量用两个@(常用的全局变量一般都是已经定义好的);

申明局部变量语法:declare @变量名 数据类型;例如:declare @num int;

赋值:有两种方法式(@num为变量名,value为值)

set @num=value;   或   select @num=value;

如果想获取查询语句中的一个字段值可以用select给变量赋值,如下:

select @num=字段名 from 表名 where ……

中变量不用事前申明,在用的时候直接用“@变量名”使用就可以了。

第一种用法:set @num=1; 或set @num:=1; //这里要使用变量来保存数据,直接使用@num变量

第二种用法:select @num:=1; 或 select @num:=字段名 from 表名 where ……

注意上面两种赋值符号,使用set时可以用“=”或“:=”,但是使用select时必须用“:=赋值”


在sql中,我们常常使用临时表来存储临时结果,对于结果是一个集合的情况,这种方法非常实用,但当结果仅仅是一个数据或者是几个数据时,还要去建一个表,显得就比较麻烦,另外,当一个sql语句中的某些元素经常变化时,比如选择条件,(至少我想)应该使用局部变量。当然ms   sql   server的全局变量也很有用。  

> > > > 局部变量  

声明:declare   @local_variable   data_type  

@local_variable   是变量的名称。变量名必须以   at   符   (@)   开头。data_type   是任何由系统提供的或用户定义的数据类型。变量不能是   text、ntext   或   image   数据类型。  

示例:  

use   master  
declare   @sel_type   char(2)  
declare   @sel_cunt   numeric(10)  
set   @sel_type   =   'u '/*user   table*/  
set   @sel_cunt   =   10  

/*返回系统中用户表的数目*/  
select   @sel_cunt   =   count(*)  
from   sysobjects  
where   type   =   @sel_type  

select   @sel_cunt   as   'user   table   ' 's   count '  

如果要返回系统表的数目,可以用set   @sel_type   =   's '  

可能这个例子并不能说明使用变量的好处,我只是想说明使用方法。当一组(几个甚至几十个)sql语句都使用某个变量时,就能体会到他的好处了。  

> > > > 全局变量  

全局变量是系统预定义的,返回一些系统信息,全局变量以两个at(@)开头。下面是我统计了一些较为常用的变量。  

@@connections  
返回自上次启动以来连接或试图连接的次数。  

@@cursor_rows  
返回连接上最后打开的游标中当前存在的合格行的数量。  

@@datefirst  
返回每周第一天的数字  

@@error  
返回最后执行的sql   语句的错误代码。  

@@fetch_status  
返回被   fetch   语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。  

@@identity  
返回最后插入的标识值  

@@langid  
返回当前所使用语言的本地语言标识符(id)。  

@@language  
返回当前使用的语言名。  

@@lock_timeout  
返回当前会话的当前锁超时设置,单位为毫秒。  

@@procid  
返回当前过程的标识符   (id)   。  

@@rowcount  
返回受上一语句影响的行数。  

@@servername  
返回运行   的本地服务器名称。  

@@spid  
返回当前用户进程的服务器进程标识符   (id)。  

@@trancount  
返回当前连接的活动事务数。  

@@version  
返回当前安装的日期、版本和处理器类型。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:sql中的日期处理Nächster Artikel:sql判断存储过程是否存在