SQL中的全局变量和局部变量_第1页
SQL中的全局变量和局部变量_第2页
SQL中的全局变量和局部变量_第3页
SQL中的全局变量和局部变量_第4页
SQL中的全局变量和局部变量_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SQL中的全局变量和局部变量在SQL中,我们常常使用临时表来存储临时结果,对于结果是一个集合的情况,这种方法非常实用,但当结果仅仅是一个数据或者是几个数据时,还要去建一个表,显得就比较麻烦,另外,当一个SQL语句中的某些元素经常变化时,比如选择条件,(至少我想)应该使用局部变量。当然MS SQL Server的全局变量也很有用。>>>>局部变量 声明:DECLARE local_variable data_type local_variable 是变量的名称。变量名必须以 at 符 () 开头。data_type 是任何由系统提供的或用户定义的数据类型。变量不能是 te

2、xt、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' 如果要返回系统表的数

3、目,可以用set SEL_TYPE = 'S' 可能这个例子并不能说明使用变量的好处,我只是想说明使用方法。当一组(几个甚至几十个)SQL语句都使用某个变量时,就能体会到他的好处了。 >>>>全局变量 全局变量是系统预定义的,返回一些系统信息,全局变量以两个at()开头。下面是我统计了一些较为常用的变量。 CONNECTIONS 返回自上次启动以来连接或试图连接的次数。 CURSOR_ROWS 返回连接上最后打开的游标中当前存在的合格行的数量(返回被打开的游标中还未被读取的有效数据行的行数)DATEFIRST 返回每周第一天的数字 ERROR 返回最后执

4、行的SQL 语句的错误代码。 FETCH_STATUS 返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。 IDENTITY 返回最后插入的标识值 LANGID 返回当前所使用语言的本地语言标识符(ID)。 LANGUAGE 返回当前使用的语言名。 LOCK_TIMEOUT 返回当前会话的当前锁超时设置,单位为毫秒。 PROCID 返回当前过程的存储过程标识符 (ID) 。 ROWCOUNT 返回受上一语句影响的行数。 SERVERNAME 返回运行 的本地服务器名称。 SPID 返回当前用户进程的服务器进程标识符 (ID)。 TRANCOUNT 返回当前连接

5、的活动事务数。 VERSION 返回当前安装的日期、版本和处理器类型。CPU_BUSY返回自SQL Server 最近一次启动以来CPU 的工作时间其单位为毫秒DATEFIRST返回使用SET DATEFIRST 命令而被赋值的DATAFIRST 参数值SET DATEFIRST,命令用来指定每周的第一天是星期几DBTS返回当前数据库的时间戳值必须保证数据库中时间戳的值是惟一的ERROR返回执行Transact-SQL 语句的错误代码FETCH_STATUS返回上一次FETCH 语句的状态值IDLE返回自SQL Server 最近一次启动以来CPU 处于空闭状态的时间长短单位为毫秒IO_BUS

6、Y返回自SQL Server 最近一次启动以来CPU 执行输入输出操作所花费的时间其单位为毫秒LANGID返回当前所使用的语言ID 值LANGUAGE返回当前使用的语言名称LOCK_TIMEOUT返回当前会话等待锁的时间长短其单位为毫秒MAX_CONNECTIONS返回允许连接到SQL Server 的最大连接数目MAX_PRECISION返回decimal 和numeric 数据类型的精确度NESTLEVEL返回当前执行的存储过程的嵌套级数初始值为0OPTIONS返回当前SET 选项的信息PACK_RECEIVED返回SQL Server 通过网络读取的输入包的数目PACK_SENT返回SQ

7、L Server 写给网络的输出包的数目PACKET_ERRORS返回网络包的错误数目PROCID返回当前存储过程的ID 值REMSERVER返回远程SQL Server 数据库服务器的名称SERVICENAME返回SQL Server 正运行于哪种服务状态之下如MSSQLServer MSDTC SQLServerAgentSPID返回当前用户处理的服务器处理ID 值TEXTSIZE返回SET 语句的TEXTSIZE 选项值SET 语句定义了SELECT 语句中text 或image数据类型的最大长度基本单位为字节TIMETICKS返回每一时钟的微秒数TOTAL_ERRORS返回磁盘读写错误

8、数目TOTAL_READ返回磁盘读操作的数目TOTAL_WRITE返回磁盘写操作的数目TRANCOUNT返回当前连接中处于激活状态的事务数目常用函数-统计函数-AVG -求平均值COUNT -统计数目MAX -求最大值MIN -求最小值SUM -求和-AVGuse panguselect avg(e_wage) as dept_avgWagefrom employeegroup by dept_id-MAX-求工资最高的员工姓名use panguselect e_namefrom employeewhere e_wage =(select max(e_wage)from employee)-S

9、TDEV()-STDEV()函数返回表达式中所有数据的标准差-STDEVP()-STDEVP()函数返回总体标准差-VAR()-VAR()函数返回表达式中所有值的统计变异数-VARP()-VARP()函数返回总体变异数-算术函数-/*三角函数*/SIN(float_expressin) -返回以弧度表示的角的正弦COS(float_expressin) -返回以弧度表示的角的余弦TAN(float_expressin) -返回以弧度表示的角的正切COT(float_expressin) -返回以弧度表示的角的余切/*反三角函数*/ASIN(float_expressin) -返回正弦是FLOA

10、T 值的以弧度表示的角ACOS(float_expressin) -返回余弦是FLOAT 值的以弧度表示的角ATAN(float_expressin) -返回正切是FLOAT 值的以弧度表示的角ATAN2(float_expressin1,float_expressin2)-返回正切是float_expressin1 /float_expres-sion2的以弧度表示的角DEGREES(numeric_expressin)-把弧度转换为角度返回与表达式相同的数据类型可为-INTEGER/MONEY/REAL/FLOAT 类型RADIANS(numeric_expressin) -把角度转换为弧

11、度返回与表达式相同的数据类型可为-INTEGER/MONEY/REAL/FLOAT 类型EXP(float_expressin) -返回表达式的指数值LOG(float_expressin) -返回表达式的自然对数值LOG10(float_expressin)-返回表达式的以10 为底的对数值SQRT(float_expressin) -返回表达式的平方根/*取近似值函数*/CEILING(numeric_expressin) -返回>=表达式的最小整数返回的数据类型与表达式相同可为-INTEGER/MONEY/REAL/FLOAT 类型FLOOR(numeric_expressin)

12、-返回<=表达式的最小整数返回的数据类型与表达式相同可为-INTEGER/MONEY/REAL/FLOAT 类型ROUND(numeric_expressin) -返回以integer_expressin 为精度的四舍五入值返回的数据-类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型ABS(numeric_expressin) -返回表达式的绝对值返回的数据类型与表达式相同可为-INTEGER/MONEY/REAL/FLOAT 类型SIGN(numeric_expressin) -测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型-与表达式相同可为I

13、NTEGER/MONEY/REAL/FLOAT 类型PI() -返回值为 即3.1415926535897936RAND(integer_expressin) -用任选的integer_expressin做种子值得出0-1 间的随机浮点数-字符串函数-ASCII() -函数返回字符表达式最左端字符的ASCII 码值CHAR() -函数用于将ASCII 码转换为字符-如果没有输入0 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值LOWER() -函数把字符串全部转换为小写UPPER() -函数把字符串全部转换为大写STR() -函数把数值型数据转换为字符型数据LTRIM()

14、-函数把字符串头部的空格去掉RTRIM() -函数把字符串尾部的空格去掉LEFT(),RIGHT(),SUBSTRING() -函数返回部分字符串CHARINDEX(),PATINDEX() -函数返回字符串中某个指定的子串出现的开始位置SOUNDEX() -函数返回一个四位字符码-SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值DIFFERENCE() -函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异-0 两个SOUNDEX 函数返回值的第一个字符不同-1 两个SOUNDEX 函数返回值的第一个字符相同-2 两个SOUNDEX 函数返回

15、值的第一二个字符相同-3 两个SOUNDEX 函数返回值的第一二三个字符相同-4 两个SOUNDEX 函数返回值完全相同QUOTENAME() -函数返回被特定字符括起来的字符串/*select quotename('abc', '' quotename('abc')运行结果如下-abc abc*/REPLICATE() -函数返回一个重复character_expressin 指定次数的字符串/*select replicate('abc', 3) replicate( 'abc', -2) replicate(

16、 'abc', 0)运行结果如下- -abcabcabc NULL 空*/REVERSE() -函数将指定的字符串的字符排列顺序颠倒REPLACE() -函数返回被替换了指定子串的字符串/*select replace('abc123g', '123', 'def')运行结果如下- -abcdefg*/SPACE() -函数返回一个有指定长度的空白字符串STUFF() -函数用另一子串替换字符串指定位置长度的子串-数据类型转换函数-CAST() 函数语法如下CAST() (<expressin> AS <data

17、_ type> length )CONVERT() 函数语法如下CONVERT() (<data_ type> length , <expressin> , style)select cast(100+99 as char) convert(varchar(12), getdate()运行结果如下- -199 Jan 15 2000-日期函数-DAY() -函数返回date_expressin 中的日期值MONTH() -函数返回date_expressin 中的月份值YEAR() -函数返回date_expressin 中的年份值DATEADD(<date

18、part> ,<number> ,<date>)-函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期DATEDIFF(<datepart> ,<number> ,<date>)-函数返回两个指定日期在datepart 方面的不同之处DATENAME(<datepart> , <date>) -函数以字符串的形式返回日期的指定部分DATEPART(<datepart> , <date>) -函数以整数值的形式返回日期的指定部分GETDATE() -函数以DATETIME 的缺省格式返回系统当前的日期和时间-系统函数-APP_NAME() -函数返回当前执行的应用程序的名称COALESCE() -函数返回众多表达式中第一个非NULL 表达式的值COL_LENGTH(<'table_name'>, <'column_name'>) -函数返回表中指定字段的长度值COL_NAME(<table_id>, <column_id>) -函数返回表中指定字段的名称即列名DATALENG

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论