《T—SQL变量与运算符.ppt》由会员分享,可在线阅读,更多相关《T—SQL变量与运算符.ppt(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、TSQL变量与运算符一、SQL的标识符1、长度为1-30个字符2、第一个字符必须为字母,下划线“_”,和#为首表示是一个局部变量。#为首表示一个临时数据库。3、标识符内不允许含有空格和SQL关键字作为用户定义的标识符。二、TSQL运算符(一)算术运算符用于数值型字段、变量间的算术运算。包括+、-、*、/、%(二)位运算符&、|、,首先将这些数据转换为二进制数,然后再进行计算。(三)比较运算符、=、!=说明:1、比较运算表达式返回一个布尔值,通常出现在条件表达式中。2、比较运算表达式通常和AND、OR、NOT一起构成更为复杂的逻辑表达式。与比较运算符不同的是,这三种运算的操作数只能是布尔型数据或
2、表达式(四)、连接运算符+用于将两个字符串合并为一个字符串,通常也称为字符串运算符。可连接的操作数的类型有char、varchar、text。例:SQL+SERVER 2000其结果为SQL SERVER 2000(五)、运算符的优先级1、()2、3、4、&5、|6、*、/、%7、+、-8、NOT9、AND10、OR 三、TSQL变量(一)注意1、变量取名规则同标识符,不区分大小写;2、要便于理解和记忆;3、运行时变量所占用的字节由变量的类型决定;4、每个变量在使用前要先定义。(二)类型1、全局变量:由系统定义并维护2、局部变量(三)局部变量1、定义:在使用局部变量前首先用DECLARE语句定
3、义,其生存期仅生存于声明它的批处理、存储过程或触发器中,处理结束后,存储在局部变量中的信息将丢失。格式:DECLARE 变量名 数据类型,2、赋值:select 变量名=表达式,fromwhere例:select*from 学生表Declare ptr int,sum int,num char(9),age tinyint,two_num char(9),two_age tinyintSelect sum=10Select num=学号,age=年龄 from 学生表Select two_num=学号,two_age=年龄 from 学生表Where 姓名=沈香娜Select ptr,sum,
4、num,age,two_num,two_age4、利用update为局部变量赋值Declare dbage tinyintUpdate 学生表 set dbage=3*年龄 where 学号=200203001 Select dbage(四)全局变量全局变量不能由程序员定义。全局变量提供了用户当前的会话信息。全局变量是不可赋值的,并且在所有的程序中 都可以直接使用。在某个时刻,各用户的值是互不相同的。SQL SERVER的全局变量rowcount除了declare语句之外,其他任何语句都可以改变rowcount的值。若需要重复使用此值,或者在执行某些中间处理后,还需要使用该值,则需要声明一个整
5、型变量,利用该变量存储rowcount的值。例:declare totalrow int select totalrow=rowcount*在触发器中,这是一项特别有用的技术。在创建触发器的时候,应当首先弄清楚每条语句对rowcount产生的影响是什么。当退出一个触发器并继续向下执行时,rowcount被恢复成启用触发器的语句所设置的原始值。error用户在执行完每条SQL语句后都检查一遍error,尤其是在存储过程和触发器中。如果error为非0值,则表明执行过程中产生了错误,此时程序中应采取相应措施加以处理。error的值与rowcount一样,会随着每条SQL语句的变化而变化。例:sel
6、ect*from 学生表 where 性别=女Select rowcount 处理记录数Select error ERROR的值为trancount 返回当前连接的活动事务数。version 它的值代表的是SQL SERVER当前安装的日期、版本和处理器类型。它可以对网络中某个未命名的服务器进行识别。spid 它返回当前用户进程的服务器进程标识符(ID)。可以在sp_who输出结果中标识当前用户进程。例:select trancount 活动事务数Select spid 用户进程的服务器进程标识符,System_ USER登录用户,USER用户名select version SQL SERVE
7、R的当前版本和处理器类型identity该全局变量返回最后插入的标识值在一条insert和select into语句完成后,identity中包含此语句产生的最后的标识值。若此语句没有影响任何有标识列的表,则它返回null若插入了多行,则会产生多个标识值,它返回最后产生的标识值。若此语句激发一个或多个执行产生标识值的触发器,则语句执行后立即调用identity将返回由触发器产生的最后的标识值。若insert或select into语句失败,或事务被回滚,则其值不会原为以前的设置。create table id_example1(编号 int identity,姓名 char(8)not null)insert id_example1(姓名)values(刘东)select identity 标识值insert id_example1(姓名)values(刘红)select identity 标识值select*from id_example1nestlevel 它返回当前存储过程执行的嵌套层次(初始值为0)。但最大层数为32。fetch_status 它返回被fetch语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。0:fetch语句成功-1:fetch语句失败或行超出了结果集-2:所取数据的行没有找到。
限制150内