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是任何 由系统提供的或用户定义的数据类型。变量

2、不能是 text、ntext 或 image 数据类 型。示例:use masterdeclare SEL_TYPE char(2)declare SEL_CUNT numeric(10)set SEL_TYPE = 'U'/*user table*/set SEL_CUNT = 10/*返回系统中用户表的数目 */select SEL_CUNT = COUNT(*)from sysobjectswhere type = SEL_TYPEselect SEL_CUNT as 'User table ''s count'如果要返回系统表的数目,可以

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

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

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

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

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

8、每一时钟的微秒数TOTAL_ERRORS返回磁盘读写错误数目TOTAL_READ 返回磁盘读操作的数目TOTAL_WRITE返回磁盘写操作的数目TRANCOUNT 返回当前连接中处于激活状态的事务数目常用函数统计函数 AVG -求平均值 COUNT -统计数目 MAX - 求最大值 MIN -求最小值SUM -求和 -AVGuse panguselect avg(e_wage) as dept_avgWage from employeegroup by dept_id-MAX-求工资最高的员工姓名 use pangu select e_name from employee where e_wa

9、ge = (select max(e_wage) from employee) -STDEV()-STDEV() 函数返回表达式中所有数据的标准差-STDEVP()-STDEVP() 函数返回总体标准差-VAR()-VAR() 函数返回表达式中所有值的统计变异数-VARP()-VARP() 函数返回总体变异数算术函数 /*三角函数 */SIN(float_expressiCOS(float_expressiTAN(float_expressiCOT(float_expressiO返回以弧度表示的角的正弦 O-返回以弧度表示的角的余弦 o-返回以弧度表示的角的正切 0-返回以弧度表示的角的余切/

10、* 反三角函数 */ ASIN(float_expressi ACOS(float_expressi ATAN(float_expressiO返回正弦是FLOAT值的以弧度表示的角 0-返回余弦是FLOAT值的以弧度表示的角 o-n返回正切是FLOAT值的以弧度表示的角ATAN2(float_expressio n1,float_expressio n2)-返回正切是float_expressi o n1 /float_expion2的以弧度表示的角DEGREES(numeric_expressio n)-把弧度转换为角度返回与表达式相同的数据类型可为-INTEGER/MONEY/REAL/F

11、LOAT类型RADIANS(numeric_expressi o n-把角度转换为弧度返回与表达式相同的数据 类型可为-INTEGER/MONEY/REAL/FLOAT类型EXP(float_expressi o-返回表达式的指数值LOG(float_expressi o-返回表达式的自然对数值LOG10(float_expressi o-返回表达式的以10为底的对数值SQRT(float_expressi o-返回表达式的平方根/* 取近似值函数 */CEILING(numeric_expressi o n)返回 >=表达式的最小整数返回的数据类型与 表达式相同可为-INTEGER/M

12、ONEY/REAL/FLOAT类型FLOOR(numeric_expressi o n)返回 <=表达式的最小整数返回的数据类型与表 达式相同可为-INTEGER/MONEY/REAL/FLOAT类型ROUND(numeric_expressi o n-返回以 integer_expressi 为精度的四舍五入值 返回的数据-类型与表达式相同可为 INTEGER/MONEY/REAL/FLOAT 类型 ABS(numeric_expressi o n返回表达式的绝对值返回的数据类型与表达式相同 可为-INTEGER/MONEY/REAL/FLOAT类型SIGN(numeric_expre

13、ssi o事测试参数的正负号返回0零值1正数或-1负数返 回的数据类型-与表达式相同可为 INTEGER/MONEY/REAL/FLOAT 类型PI()-返回值为 n即 3.1415926535897936RAND(integer_expressi o -n用任选的integer_expressi 做种子值得出 0-1 间的随机浮点数字符串函数 ASCII() -函数返回字符表达式最左端字符的 ASCII 码值CHAR() -函数用于将 ASCII 码转换为字符-如果没有输入 0 255 之间的 ASCII 码值 CHAR 函数会返回一个 NULL 值 LOWER() -函数把字符串全部转换为

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

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

16、eplicate('abc', 3) replicate( 'abc', -2) replicate( 'abc', 0) 运行结果如下abcabcabc NULL 空 */REVERSE() -函数将指定的字符串的字符排列顺序颠倒REPLACE() -函数返回被替换了指定子串的字符串/*select replace('abc123g', '123', 'def') 运行结果如下abcdefg*/SPACE() -函数返回一个有指定长度的空白字符串STUFF() -函数用另一子串替换字符串指定位置长

17、度的子串数据类型转换函数 CAST() 函数语法如下CAST() (vexpressi o n> AS <data_ type> length )CONVERT() 函数语法如下CONVERT() (vdata_ type> length , vexpressio n> , style)select cast(100+99 as char) convert(varchar(12), getdate() 运行结果如下199 Jan 15 2000日期函数 DAY()-函数返回date_expressi中的日期值MONTH()-函数返回date_expressi中的月

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

温馨提示

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

评论

0/150

提交评论