您当前的位置: 首页 >  sql

MSSql数据库sql语句函数大集合

发布时间:2008-10-08 20:00:00 ,浏览量:0

转自:http://www.721j.com/article/article.asp?id=126 

---------------------------------------

聚合函数:

1.AVG 返回组中的平均值,空值将被忽略。    例如:use  northwind   // 操作northwind数据库          Go   Select  avg (unitprice)   //从表中选择求unitprice的平均值          From  products          Where  categoryid = ‘8’ 2.BINABY_CHECKSUM  可用于检测表中行的更改返回值由表达式的运算结果类型决定    例如:use northwind          Go          Create  table  tablebc(productid int,bchecksum int)   //建立有两个属性的表          Insert  into tablebc   //向表中插入数据          Select  priductid,binary_checksum(*)          From  products          Update  products   //更新          Set  productname=’oishi tofu’, unitprice=20 where  productname = ‘tofu’            Update  products   //更新   Set  priductname=’oishi konbu’, unitprice = 5 where priductname=’konbu’          Update priducts     //更新          Set  prodctname=’oishi genen shouyu’, unitprice =12          Where priductname=’genen shouyu’              Select  productid    //挑出变化的行   From tablebc   Where exists (          Select productid from products          Where  product.productid = tablebc.productid and          binary_checksu (*) <> tablebc.bchecksum)  //标志出变化的行 3.CHECKSUM  返回在表的行上或在表达式上计算的校验值 CHECKSUM 用于生成哈希索引    例如:         Set arithabort on  se northwind  Go         Alter table products         Add cs_pname as checksum(productname)  //在参数列是添加一个校验值         Create imdex pname_index on products(cs_pname)  //生成索引         Go         Select top 5 cs_pname from products order by cs_pname desc //选择根据索引列的前5 个cs_pname 4.Checksum_agg   返回组中值的校验值。空值冽被忽略。    例如:         Use northwind    Go  Select checksum_agg(cast(unitsinstock  as int)) //检测products 表的unitsinstock列的更改         from products 5.Count   返回组中项目的数量    例如:   例一:   Use pubs   Go   Select count(distinct city)  //对city中的每一行都计算,并返回非空的数量   From authors   Go   例二:                 Use pubs   Go   Select count(*)  // 返回组中项目的数量   From titles   Go   例三:   Use pubs   Go   Select count(*),avg(price) // 选择advance大于$1000的总数和平均price   From titles   Where advance >$1000   Go 6.Count_big  返回组中项目的数量。在使用上和count 基本上是一样的,只是在返回值上有一点区别,count_big 返回是bigint的数据类型值,count返回的是int数据类型值。 7.Grouping  返回一个聚合函数,它产生一个附加列,当用CUBE或ROLLUP运算符添加行时,附加 的列输出值为1,当所添加的行不是由CUBE或ROLLUP产生时,附加列值为0    例如:   Use pubs   Go   Select royalty,sum(advance) ‘total advance’,  //选择列royalty,聚合 advance数值   Grouping(royalty) ‘grp’  //grouping 函数   From titles                 Group by royalty with rollup //group by 与 rollup 相联系产生分组 8.Max  返回表达式的最大值    例如:   Use pubs   Go   Select max(ytd_sales)  //选择ytd_sales列属性,求其最大值。   From titles   Go 9.Min  返回表达式的最小值    例如:   Use pubs   Go   Select min(ytd_sales)  //选择ytd_sales列属性,求其最小值。   From titles   Go 10.Stdev  返回给定表达式中所有值的统计标准偏差。     例如:   Use pubs   Select stdev(royalty)   From titles 11.Stdevp  返回给定表达式中所有值的填充统计标准偏差。     例如:   Use pubs   Select stdev(royalty)   From titles 12.sum  返回表达式中所有值的的和,或只返回DISTINCT值。SUM只能用数字列。     例如:   Use pubs   Go   Select type,sum(price),sum(advance)  //选择type,price的和,advance的和   From titles   Where type like ‘%cook’  //匹配结尾字符为cook   Group by type   Order by type   Go     例如2:   Use pubs    Go   Select type,price,advance   From titles   Where type like’%cook’   Order by type   Compute sum(price),sum(advance) by type   //根据type的属性计算price和advance 的和 13.Var  返回给定表达式中所有值的统计方差。     例如:   Use pubs   Go   Selecdt var(royalty)   From titles 14.Varp  返回给定表达式中所有值的填充的统计方差     例如:   Use pubs   Go   Select  varp(royalty)   From titles

时间及日期函数

1.Dateadd  在向指定日期加上一段时间的基础上返回新datetime值。    例如:   Use northwind   Go   Select dateadd(day,3,Hiredate)   //显示函数dateadd执行结果   From employees 2.datediff  返回跨两个指定日期和时间边界数。   例如:   Use northwind   Go   Select datediff(day,Hiredate,getdate()) as no_of_days   From employees   go 3.Datename  返回代表指定日期的指定日期部分的字符串。   例如:  Select datename(month,getdate()) as ‘monthname’ 4.Datepart  返回代表指定日期的指定日期部分的整数。    例如:   Select datepart(month,getdate()) as ‘monthnumber’   Select datepart(m,0),datepart(d,0),datepart(yy,0) 5.Day month year  返回指定日期的天 月 年 的日期部分的整数    例如:   Select month(0),day(0),year(0) 6.Getdate  按datetime值的标准内部格式返回当前系统时间和日期    例如:   Use northwind   Go   Create table sales  //创建sales表   (   Sale_id char(11) not null  //sale_id列,类型char(11),not null   Sale_name varchar(40) not null  //sale_name列,类型varchar(40),not null   Sale_date datetime defaull getdate()  // sale_date列,类型datetime,默认值getdate()   )   Insert into sales (sale_id,sale_name)      Values(1,’foods’)   //向表内插值   Select * from sales   //表结果检索 7.Getutcdate  返回表当前CUT时间的datetime值。    例如:   Select getutcdatea()

数学函数

1.Abs  返回给定数字的绝对值 2.Acos  返回以弧度表示的角度值,该角度值的余弦为给定的float表达式,也叫反余弦 3.Asin   返回以弧度表示的角度值,也叫反正弦。    例如:   Declare @angle float   Set @angle = -1.01   Select ‘the asin of the angke is : ’ + convert (varchar,asin(@angle)) 4.Atan  返回以弧度表示的角度值,该角度值的正切为给定的float表达式,也叫反正切。 5.Atn2  返回以弧度表示的角度值,该角度值的正切介于两个给定的float表达式之间    例如:   Declare @anglel float   Declare @angle2 float   Set @anglel = 35.175643   Set @angle2 =129.44   Select ‘the atn2 of the angle is : ’ + convert (varchar,atn2(@anglel,@angle2))   Go 6.Ceiling  返回或等于所给数字表达式的最小整数。    例如:   Select ceiling($123.45),ceiling($-123.45),ceiling($0.0) 7.Cos  返回给定表达式中给定角度的三角余弦值 8.Cot  返回给定float表达式指定角度的三角余切值    例如:   Declare @angle float   Set @angle = 124.1332   Select ‘the cot fo the angle is :’ + convert(varchar,cot(@angle)) 9.Degrees  当给出弧度为单位的角度时,返回相应的以度数为单位的角度。    例如:   Select ‘the number of degrees in PI/2 radinans is :’ +convert(varchar,degrees((PI()/2))) 10.Exp  返回所给的float表达式的指数值。 11.floor  返回小于或等于所给数字表达式的最大整数。 12.log   返回给定float表达式的自然对数。 13.log10  返回给定float表达式的以10为底的对数。     例如:   Declare @var float   Set @var = 5.175643   Select ‘the log of the variable is :’ +convert (varchar,log(@var)) 14.PI  返回PI的常量值。 15.power  返回给定表达式乘指定次方的值。    例如:   Declare @value int,@counter int   Set @value = 2   Set @counter = 1   While @counter <5   Begin    Select power(@value,@counter)   Set nocount on    Set @counter=@counter +1   End   Go 16.radians 对于数字表达式中输入的度数值返回弧度值。 17.rand  返回0到1之间的随机float值。 18.round  返回数字表达式并四舍五入为指定的长度或精度。    例如:   Select round(123.9995,3),round(123.9994,3) 19.sign  返回给定表达式的正 零 或负号    例如:   Declare @angle gloat   Declare @value real   Set @value=-1   While @value<2    Begin     Select sign(@value)   Set nocount on    Select @value=value+1    end   Set nocount off 20.sin 以近似数字表达式返回给定角度的三角正弦值。 21.sqrt  返回给定表达式的平方根。     例如:   Declare @myvalue float   Set @myvalue = 1.00   While @myvlaue <10    Begin     Select sqrt(@myvalue)   Select @myvalue = @myvalue+1   End 22.square  返回给定表达式的平方值。 23.tan  返回给定表达式的正切。

元数据函数

1.col_length  返回列的定义长度 例如:         Use northwind         Go         Create table t1                ( c1 varchar(40),                 C2 nvarchar(80) )         Go         Select col_length(‘t1’,’c1’) as ‘varchar’         Select col_length(‘t2’,’c2’) as ‘nvarchar’         Go         Drop table t1 2.col_name  返回数据库列的名称,该列具有相应的表标识号和列标识号。 例如:         Use northwind         Go         Set nocount off         Select col_name(object_id(‘employees’),1) as employees 3.columnproperty  返回有关列或过程的参数的信息。 例如:         Use northwind         Go         Select columnproperty (object_id(‘employees’),’title’,’precision’) 4.databaseproperty  返回给定数据库和属性名的命名数据库属性值。 例如:         Use northwind         Go                Select databaseproperty(‘northwind’,’isautoclose’) 5.databasepropertyex  返回指定数据库的指定数据库选项或属性的当前设置。 例如:         Use northwind         Go                         Select databasepropertyex(‘northwind’,isautoclose’) 6.db_id  返回数据库标识ID 例如:         Select name,db_id(name) as db_id         From sysdatabases         Order by dbid 7.db_name 返回数据库名称。 8.file_id  返回当前数据库中给定逻辑文件标识(id)号。 9.file_name  返回指定文件标识(id)号的逻辑文件名。 10.filegroup_id  返回给定文件组名称号 11.filegroup_name 返回给定文件组标识(id)号的文件组名。 12.filegroupproperty  给定文件组和属性名时,返回指定的文件组属性值。 13.fileproperty  给定文件名和属性时返回指定的文件名属性值。 14.fn_listextendedproperty  返回数据库对像的扩展属性值。 例如:         Use northwind         Go         Create table t1 (id int, name char(20))  //创建表T1         Exec sp_addextendedproperty  ‘caption’,’employee id’,’user’,dbo,’table’,’t1’, ’column’,id     //为表T1列ID添加扩展属性 Exec sp_addextendedproperty  ‘caption’,’employee name’,’user’, dbo, ‘table’, ‘t1’,’column’,name Select * from ::fn_listextendedproperty (null,’suer’,’dbo’,table’,t1’,’column’,              Default)   //列举表T1的扩展属性 15.fulltextserviceproperty  返回有关全文服务级别属性的信息。 原型:fulltextserviceproperty (catalog_name,property)         参数说明:         Catalog_name 包含全文目录名称的表达式。         Property  包含全文目录属性名称的表达式。                Property 参数值列表                       Populatestatus  0 = 空闲  1 = 正在进行完全填充  2 = 已暂停                                             3 = 中止  4 = 正在恢复   5 = 关机                                             6 = 正在进行增量填充  7 = 生成索引                                              8 = 磁盘已满,已暂停  9 = 更改跟踪 例如:         Use northwind         Go                  Select  fulltextcatalogproperty(‘cat_desc’,’itemcount”) 16.fulltextserviceproperty  返回有关全文服务级别属性的信息。 原型:fulltextserviceproperty(property)               Property 参数说明

属性

描述

ResourceUsage 一个从 1(后台)到 5(专用)之间的值。 ConnectTimeout 在超时发生前,Microsoft 搜索服务等待所有与 Microsoft® SQL Sever™ 数据库服务器的连接完成以便进行全文索引填充所用的时间(以秒为单位)。 IsFulltextInstalled 在 SQL Server 的当前实例中安装全文组件。1 = 已安装全文组件。 0 = 未安装全文组件。 NULL = 输入无效或发生错误。 DataTimeout 在超时发生前,Microsoft 搜索服务等待所有由 Microsoft SQL Server 数据库服务器返回数据以便进行全文索引填充所用的时间(以秒为单位)。 例如:   Use northwind   Go    Select fulltextserviceproperty(‘isfulltextinstalled’) 17. index_col  返回索引列名称。 原型:index_col(‘table’,’index_id’,’key_id’)   参数:table 表的名称。      Index_id 索引的ID      Key_id  键的ID 例如:   Use northwind   Go    Declare @id int, @type char(2), @msg varchar(10), @indid smallint, @indname sysname, @status int  //声明变量   Set nocount on    Select @id=id,@type=type  //获得employees表的ID号以便在系统索引库中           查找其索引    From sysobjects    Where name=’employees’ and type=’u’    Print ‘index information for the authors table’  //打印输出信息    Print ‘----------------------------------------------’   Declare  I cursor   //声明一个游标    For    Select indid, name, status  //循环搜索employees 表中所有的索引    From sysindexes    Where id=@id    Open I        //打开游标    Fetch next from I into @indid, @indname, @status   //获取下一系列索引信息     If @@fetch_status = 0   //如果状态为0,打印‘ ’      Print ‘ ‘       While @@fetch_status = 0  //循环如果从游标处查找还有行,打印出相关 索引信息     Begin     Set @msg = null    //初始化变量msg为null     Set @msg = ‘ index number ‘ + convert(varchar,@indid)+       ‘is’ + @indname    //填充索引名变量     Set @indkey = 1    //初始化变量indkey为1      While @indkey<=16 and index_col(@name,@indid, @indkey)   // indkey等于key_id,其值可以从1到16      Is not null     Begin     If @indkey = 1  //打印不同的信息当indkey不等于1和等于1时     Set @msg = msg + ‘, ‘+ Index_col(@name,@indid,@indkey)      Set @indkey = @indkey + 1   //indkey递增     End     Print @msg   //打印信息     Set @msg = null     Fetch next from I into @indid,@indname,@status   //循环下一条    End    Close I    Deallocate i    Set nocount off 18. indexkey_property  返回有关索引键的信息 原型:   Indexkey_property (table_id,index_id,key_id,property)   参数说明:     Table_id 表标识号     Index_id 索引标识号     Indkey_id 索引列的位置     Property  属性的名称,将要为该属性返回信息。   Propert 的属性参数:     Columnid 索引的key_id位置上的列ID     Isdescending 存储索引列的顺序。1=降序,0=升序 例如:   Use northwind   Go    Select indexkey_property(object_id(‘employees’,1,1,’columnid’) 19. indexproperty  在给定表标识号、索引名称及属性的前提下,返回指定的索引属性值 原型:   Indexproperty (table_id,index,property)   参数说明:     Table_id 是包含要为其提供索引属性信息的表或索引视图标识号的表达 式。Table_id的数据类型为int     Index  一个包含索引的名称的表达式,将为该索引返回属性信息。     Property 一个表达式,它包含将要返回的数据库属性的名称。   Property属性的参数:

属性

描述

IndexDepth 索引的深度。 返回索引所具有的级别数。 IndexFillFactor 索引指定自己的填充因子。 返回创建索引或最后重建索引时使用的填充因子。 IndexID 指定表或索引视图上的索引的索引 ID。 IsAutoStatistics 索引是由 sp_dboption 的 auto create statistics 选项生成的。 1 = True 0 = False NULL = 无效的输入 IsClustered 索引是聚集的。 1 = True 0 = False NULL = 无效的输入 IsFulltextKey 索引是表的全文键。 1 = True 0 = False NULL = 无效的输入 IsHypothetical 索引是假设的,不能直接用作数据访问路径。假设的索引保留列级统计。 1 = True 0 = False NULL = 无效的输入 IsPadIndex 索引在每个内部节点上指定将要保持空闲的空间。 1 = True 0 = False NULL = 无效的输入 IsPageLockDisallowed 1 = 通过 sp_indexoption 禁用页锁定。 0 = 允许页锁定。 NULL = 无效的输入 IsRowLockDisallowed 1 = 通过 sp_indexoption 禁用行锁定。 0 = 允许行锁定。 NULL = 无效的输入。 IsStatistics 索引是由 CREATE STATISTICS 语句或由 sp_dboption 的 auto create statistics 选项创建的。对于列级统计,统计索引将用作占位符。 1 = True 0 = False NULL = 无效的输入 IsUnique 索引是唯一的。 1 = True 0 = False NULL = 无效的输入

例如:          Use northwind          Go              Select indexproperty(object_id(‘categories’),’pk_categories’,’ispadindex’)  20.    object_id  返回数据库对象标识号。  原型:          Object_id(‘object’)  例如:              Use master          Go              Select object_id(‘northwind..employees’)  21.    object_name  返回数据库对象名。  原型:          Object_name(object_id)      例如:          Use northwind          Go              Select table_catalog,table_name              From information_schema.tables              Where table_name = object_name(111770580711)  22.    objectproperty  返回当前数据库中对象的有关信息。  原型:          Objectproperty(id,property)  参数说明:              Id 一个表达式,包含当前数据库中某一个对象的ID。ID的数据类型为INT。              Property 一个表达式,包含针对由ID指定的对象将要返回的信息。   Property 属性值参数说明:

属性名称

对象类型

描述和返回的值

CnstIsClustKey 约束 带有聚集索引的主键。 1 = True 0 = False CnstIsColumn 约束 COLUMN 约束。 1 = True 0 = False CnstIsDeleteCascade 约束 带有 ON DELETE CASCADE 选项的外键约束。 CnstIsDisabled 约束 禁用的约束。 1 = True 0 = False CnstIsNonclustKey 约束 带有非聚集索引的主键。 1 = True 0 = False CnstIsNotTrusted 约束 启用约束时未检查现有行,所以可能不是所有行都受约束的控制。 1 = True 0 = False CnstIsNotRepl 约束 使用 NOT FOR REPLICATION 关键字定义约束。 CnstIsUpdateCascade 约束 带有 ON UPDATE CASCADE 选项的外键约束。 ExecIsAfterTrigger 触发器 AFTER 触发器。 ExecIsAnsiNullsOn 过程、触发器、视图 创建时的 ANSI_NULLS 设置。 1 = True 0 = False ExecIsDeleteTrigger 触发器 DELETE 触发器。 1 = True 0 = False ExecIsFirstDeleteTrigger 触发器 对表执行 DELETE 时触发的第一个触发器。 ExecIsFirstInsertTrigger 触发器 对表执行 INSERT 时触发的第一个触发器。 ExecIsFirstUpdateTrigger 触发器 对表执行 UPDATE 时触发的第一个触发器。 ExecIsInsertTrigger 触发器 INSERT 触发器。 1 = True 0 = False ExecIsInsteadOfTrigger 触发器 INSTEAD OF 触发器。 ExecIsLastDeleteTrigger 触发器 对表执行 DELETE 时触发的最后一个触发器。 ExecIsLastInsertTrigger 触发器 对表执行 INSERT 时触发的最后一个触发器。 ExecIsLastUpdateTrigger 触发器 对表执行 UPDATE 时触发的最后一个触发器。 ExecIsQuotedIdentOn 过程、触发器、视图 创建时的 QUOTED_IDENTIFIER 设置。 1 = True 0 = False ExecIsStartup 过程 启动过程。 1 = True 0 = False ExecIsTriggerDisabled 触发器 禁用的触发器。 1 = True 0 = False ExecIsUpdateTrigger 触发器 UPDATE 触发器。 1 = True 0 = False HasAfterTrigger 表,视图 表或视图具有 AFTER 触发器。 1 = True 0 = False HasInsertTrigger 表,视图 表或视图具有 INSERT 触发器。 1 = True 0 = False HasInsteadOfTrigger 表、视图 表或视图具有 INSTEAD OF 触发器。 1 = True 0 = False HasUpdateTrigger 表、视图 表或视图具有 UPDATE 触发器。 1 = True 0 = False IsAnsiNullsOn 函数、过程、表、触发器、视图 指定表的 ANSI NULLS 选项设置为 ON,表示所有与空值的比较都取值为 UNKNOWN。只要表存在,该设置就应用于表定义中的所有表达式,包括计算列和约束。 1 = ON 0 = OFF IsCheckCnst 任何 CHECK 约束。 1 = True 0 = False IsConstraint 任何 约束。 1 = True 0 = False IsDefault 任何 绑定的默认值。 1 = True 0 = False IsDefaultCnst 任何 DEFAULT 约束。 1 = True 0 = False IsDeterministic 函数、视图 函数的确定性属性。只适用于标量值及表值函数。 1 = 可确定的 0 = 不可确定的 NULL = 不是标量值或表值函数,或者是无效的对象 ID。 IsExecuted 任何 指定执行该对象的方式(视图、过程或触发器)。 1 = True 0 = False IsExtendedProc 任何 扩展过程。 1 = True 0 = False IsForeignKey 任何 FOREIGN KEY 约束。 1 = True 0 = False IsIndexed 表、视图 带有索引的表或视图。 IsIndexable 表、视图 可以创建索引的表或视图。 IsInlineFunction 函数 内嵌函数。 1 = 内嵌函数 0 = 非内嵌函数 NULL = 不是函数,或者是无效的对象 ID。 IsMSShipped 任何 在安装 Microsoft® SQL Server™ 2000 的过程中创建的对象。 1 = True 0 = False IsPrimaryKey 任何 PRIMARY KEY 约束。 1 = True 0 = False IsProcedure 任何 过程。 1 = True 0 = False IsQuotedIdentOn 函数、过程、表、触发器、视图 指定表的被引用标识符设置为 ON,表示在表定义所涉及的所有表达式中,双引号标记分隔标识符。 1 = ON 0 = OFF IsReplProc 任何 复制过程。 1 = True 0 = False IsRule 任何 绑定的规则。 1 = True 0 = False IsScalarFunction 函数 标量值函数。 1 = 标量值 0 = 表值 NULL = 不是函数,或者是无效的对象 ID。 IsSchemaBound 函数,视图 使用 SCHEMABINDING 创建的架构绑定函数或视图。 1 = 架构绑定 0 = 非架构绑定 NULL = 不是函数或视图,或者是无效的对象 ID。 IsSystemTable 表 系统表。 1 = True 0 = False IsTable 表 表。 1 = True 0 = False IsTableFunction 函数 表值函数。 1 = 表值 0 = 标量值 NULL = 不是函数,或者是无效的对象 ID。 IsTrigger 任何 触发器。 1 = True 0 = False IsUniqueCnst 任何 UNIQUE 约束。 1 = True 0 = False IsUserTable 表 用户定义的表。 1 = True 0 = False IsView 视图 视图。 1 = True 0 = False OwnerId 任何 对象的所有者。 Nonnull = 对象所有者的数据库用户 ID。 NULL = 无效的输入。 TableDeleteTrigger 表 表有 DELETE 触发器。 >1 = 给定类型的第一个触发器的 ID。 TableDeleteTriggerCount 表 表具有指定数目的 DELETE 触发器。 >1 = 给定类型的第一个触发器的 ID。 NULL = 无效的输入。 TableFullTextBackgroundUpdateIndexOn 表 表已启用全文后台更新索引。 1 = True 0 = False TableFulltextCatalogId 表 表的全文索引数据所驻留的全文目录的 ID。 Nonzero = 全文目录 ID,它与标识全文索引表中行的唯一索引相关。 0 = 表不是全文索引的。 TableFullTextChangeTrackingOn 表 表已启用全文更改跟踪。 1 = True 0 = False TableFulltextKeyColumn 表 与某个单列唯一索引相关联的列 ID,这个单列唯一索引参与全文索引定义。 0 = 表不是全文索引的。 TableFullTextPopulateStatus 表 0 = 不填充 1 = 完全填充 2 = 增量填充 TableHasActiveFulltextIndex 表 表具有一个活动的全文索引。 1 = True 0 = False TableHasCheckCnst 表 表具有 CHECK 约束。 1 = True 0 = False TableHasClustIndex 表 表具有聚集索引。 1 = True 0 = False TableHasDefaultCnst 表 表具有 DEFAULT 约束。 1 = True 0 = False TableHasDeleteTrigger 表 表具有 DELETE 触发器。 1 = True 0 = False TableHasF, , , oreignKey 表 表具有 FOREIGN KEY 约束。 1 = True 0 = False TableHasForeignRef 表 表由 FOREIGN KEY 约束引用。 1 = True 0 = False TableHasIdentity 表 表具有标识列。 1 = True 0 = False TableHasIndex 表 表具有一个任何类型的索引。 1 = True 0 = False TableHasInsertTrigger 表 对象具有 Insert 触发器。 1 = True 0 = False NULL = 无效的输入。 TableHasNonclustIndex 表 表具有非聚集索引。 1 = True 0 = False TableHasPrimaryKey 表 表具有主键。 1 = True 0 = False TableHasRowGuidCol 表 对于 uniqueidentifier 列,表具有 ROWGUIDCOL。 1 = True 0 = False TableHasTextImage 表 表具有 text 列。 1 = True 0 = False TableHasTimestamp 表 表具有 timestamp 列。 1 = True 0 = False TableHasUniqueCnst 表 表具有 UNIQUE 约束。 1 = True 0 = False TableHasUpdateTrigger 表 对象具有 Update 触发器。 1 = True 0 = False TableInsertTrigger 表 表具有 INSERT 触发器。 >1 = 给定类型的第一个触发器的 ID。 TableInsertTriggerCount 表 表具有指定数目的 INSERT 触发器。 >1 = 给定类型的第一个触发器的 ID。 TableIsFake 表 表不是真实的。根据需要 SQL Server 对其进行内部具体化。 1 = True 0 = False TableIsPinned 表 驻留表以将其保留在数据高速缓存中。 1 = True 0 = False TableTextInRowLimit 表 text in row 所允许的最大字节数,如果没有设置 text in row 选项则为 0。 TableUpdateTrigger 表 表具有 UPDATE 触发器。 >1 = 给定类型的第一个触发器的 ID。 TableUpdateTriggerCount 表 表具有指定数目的 UPDATE 触发器。 >1 = 给定类型的第一个触发器的 ID。 例如:           Select objectproperty(object_id(‘employees’),’tabletextinrowlimit’)           23.    @@procid  返回当前过程的存储过程标识符(ID)。   例如:           Create procedure  testprocedure  as  //创建存储过程testprocedure             Select @@procid as ‘procid’   //列出存储的ID           Go           Exec testprocedure    //调用存储过程           Go   24.    sql_variant_property  返回有关sql_variant值的基本数据类型的其他信息。   原型:           Sql_variant_property (expression,property)           参数说明:                   Expression  是sql_variant类型的表达式。                   Property  包含将为其提供信息的sql_variant属性名称。       Property的参数说明:

描述

返回的 sql_variant 基本类型

BaseType SQL Server 数据类型,如: char int money nchar ntext numeric nvarchar real smalldatetime smallint smallmoney text timestamp tinyint uniqueidentifier varbinary varchar sysname 无效的输入 = NULL Precision 数字基本数据类型的位数: datetime = 23 smalldatetime = 16 float = 53 real = 24 decimal (p,s) and numeric (p,s) = p money = 19 smallmoney = 10 int = 10 smallint = 5 tinyint = 3 bit = 1 all other types = 0 int 无效的输入 = NULL Scale 数字基本数据类型小数点右边的位数: decimal (p,s) 和 numeric (p,s) = s money 和 smallmoney = 4 datetime = 3 所有其它类型 = 0 int 无效的输入 = NULL TotalBytes 要包含值的元数据和数据所需的字节数。该信息在检查 sql_variant 列中数据的最大一侧时很有用。如果该值大于 900,索引创建将失败。 int 无效的输入 = NULL Collation 代表特定 sql_variant 值的排序规则。 sysname 无效的输入 = NULL MaxLength 最大数据类型长度(以字节为单位)。例如,nvarchar(50) 的 MaxLength 是 100,int 的 MaxLength 是 4。 int 无效的输入 = NULL 例如:          Create table tablea (cola sql_variant,colb int)  //创建表tablea          Insert into tablea values(cast (462711.1 as decimal(18.2)),16811)  //插入一条记录          Select  sql_variant_property(cola,’basetype’),  //检索有关值为462711.1的cola                  Sql_variant_property(cola,’precision’),  //sql_variant_property信息                  Sql_variant_property(cola,’scale’)            From tablea          Where colb=1681  25.    typeproperty 返回有关数据类型的信息。  原型:          Typeproperty(type,property)  Property 参数值说明:

属性

描述

返回的值

Precision 数据类型的精度。 数字位数或字符个数。 NULL = 数据类型未找到。 Scale 数据类型的小数位数。 数据类型的小数位的个数。 NULL = 数据类型不是 numeric 或未找到。 AllowsNull 数据类型允许空值。 1 = True 0 = False NULL = 数据类型未找到。 UsesAnsiTrim 创建数据类型时 ANSI 填充设置为 ON。 1 = True 0 = False NULL = 数据类型未找到,或不是二进制数据类型或字符串数据类型。

例如:          Select typeproperty(‘tinyint’,’precision’) 字符串函数   1.ascii 返回字符表达式最左端字符的ASCII代码值。 例如:         Set nocount on                Declare @position int,@string char(15)                       Set @position = 1                       Set @string = ‘du monde entier’                       While @position <=datalength(@string)                       Begin                        Select                        Ascii(substring(@string,@position,1)),                       Char(Ascii(substring(@string,@position,1)))                       Set @position =@position+1                       End                       Set nocount off                       Go 2.char  将int ascii代码转换为字符的字符串函数。 3.charindex  返回字符串中指定表达式的起始位置。 原型:        Charindex(expression1,expression2,[start_location])        参数说明:               Expression1 一个表达式,其中包含要寻找的字符的次序。               Expression2 一个表达式,通常是一个用于指定序列的列。               [start_logcation] 在expression2中搜索expression1时的起始字符位置。 例如:        Use pubs        Go               Select charindex(‘wonderful’,notes)                      From titles               Where title_id=’tc3218’               Go 在使用[start_logcation]参数时要注意一点。它所能实现的功能是忽略前面的字符,从你给定的字符开始查找expression1在expression2中的位置。 例如:        declare @t varchar(50) set @t=’ddfsadawfaafdadfa’ --1 select charindex(’a’,@t,6) --2 select charindex(’a’,@t,4)               例1和例2的结果是不一样的。 4.difference  比较两个字符串。 例如:         Use pubs         Go                Select soundex(‘green’)                Soundex(‘greene’),difference(‘green’,’greene’)         Go 5.left  返回从字符串左边开始指定个数的字符。 6.len  返回字符串中字符的数量。 7.lower  将大写字符数据转换为小写字符数据后返回字符表达式。 例如:         Use pubs          Go            Select lower(substring(tit, le,1,20)) as lower,                 Lower(upper((substring(title,1,20))) as lowerupper         From titles         Where price between 11:00 and 20:00 8.ltrim  删除字符串中的起始空格。 9.rtrim  删除字符串中的末尾的空格。 例如:        Declare @string_to_trim varchar(60)  //声明变量        Set @string_to_trim = ‘    five spaces are at the beginning of this string’                                                                //变量赋值        Select ‘here is the strng without the leading spaces: ’+ ltrim (@string_to_trim)                                                                //显示函数LTRIM执行结果 10.nchar  根据unicode标准所进行的定义,用给定整数代码返回unicode字符。 例如:        Declare @position int , @nstring nchar(9)  //声明局部变量        Set @position = 1    //变量赋值        Set @nstring = N’k&benhavn’        Print ‘character #’ + ‘ ’ + ‘unicode character’ + ‘ ‘ + ‘unicode value’ //打印输出         While @position <= datalength(@nstring)  //循环判断执行        Begin                Select @position ,    //显示函数nchar执行结果               Nchar(unicode(substring(@nstring,@position,1))),               Convert (nchar(17), substring(@nstring,@position,1)),               Unicode(substring(@nstring,@position,1)) Select @position = @position+1        End        Go 11.patindex  返回指定表达式中某模式第一次出现的位置;如果在全部有效的文本和字符 数据类型中没有找到该模式,则返回零。        例如:               Use pubs               Go               Select patindex(‘%wonderfull%’,notes)               From totles               Where totle_id=’tc3218’               Go 12.quotename  返回带有分隔符的unicode字符串 13.replace  用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串 表达式。        例如:               Select replace (‘abcdefabcfvabcetil’,’abc’,’xxx’) 14.replicate  以指定的次数重复字符表达式。 15.reverse  返回字符天大的反转。 16.right  返回字符串中从右边开始指定个数的integer_expression字符。 例如:         Use pubs         Go         Select right(au_fname,5)         From authors         Order by au_fname         Go 17.soundex 返回由四个字符组成的代码,以评估两个字符串的相似性。 18.space  返回由重复的空格组成的字符串。也可以向字符串中插入空格。 19.str 由数字数据转换来的字符数据。 原型:         Str (float_expression [, length,[decimal]])         参数说明:                Float_expression 是带有小数点的近似数字数据类型的表达式。                Length  是总的长度。包括小数点、符号、数字或空格。                Decimal  是小数点右边的位数。 20.stuff  删除指定长度的字符并在指定的起始点插入另一组字符。 原型:        Stuff(character_expression,start,length,character_expression) 例如:        Select stuff(‘abcdefx’,1,2’bckjkjoui’) 21.substring 返回字符,binary,text或image表达式的一部分。        原型:               Substring(expression,start,length) 22.unicode 按照unicode标准的定义,返回输入表达式的第一个字符的整数值。 23.upper 返回将小写字符数据转换成大写的字符表达式。

文本和图像函数   1.patindex  返回指定表达式中某模式每一次出现的起始位置。详细参阅字符串函数中的patindex。  2.textptr  以varbinary格式返回对应于text、ntext或image列的文本指针值。  原型:          Textptr(column)  例如1:          Use pubs          Go          Declare @ptval varbinary(16)          Select @ptrval = textptr(logo)          From pub_info pr,publishers p          Where p.pub_id=pr.pub_id and p.pub_name=’new moon books’          Go  例如2:          Create table t1 (c1 int,c2 text)          Exec sp_tableoption ‘t1’,’text in row’,’on’          Insert t1 values(‘1’,’this is text.’)          Go          Begin tran           Declare @ptrval varbinary(16)          Select @ptrval = textptr(c2)          From t1 where c1=1          Readtext t1.c2 @ptrval 0 1          Commit  3.textvald  一个text、ntext或image函数,用于检查给定文本指针是否有效。  原型:  Textvald(‘table.column’,text_ptr)  例如:          Use pubs          Go          Select pub_id,’valid (if 1) text data’= textvald(‘pub_info.log’,textptr(logo))          From pub_info  Order by pub_id  Go

配置函数 1.connections 返回上次启动sql server 以来连接或试图连接的次数。 2.datefirst  返回set datefirst参数的当前值,setdatefirst参数指明所规定的每周第一天: 1对应星期一,2对应星期二。。。。。7对应星期日。 3.dbts  为当前数据库返回当前timestamp数据类型的值。是数据库中唯一的值。 4.langid  返回当前所使用语言的本地语言标识符(ID)。 5.language  返回当前使用的语言名。 6.lock_timeout  返回当前会话的当前锁超时设置,单位为毫秒。 7.max_connections  批回microsoft sql server 上允许的同时用户连接的最大数。返回的数不必为当前的配置的数值。 8.max_precision  返回decimal 和 numeric数据类型所用的精度级别,即该服务器中当前设置的精度。 9.nestlevel  返回当前存储过程执行的嵌套层次(初始值为0)。 10.options  `返回当前set 选项的信息。 11.remserver  当远程sql server数据库服务器在登录中出现时,返回它的名称。 12.servername 返回运行microsoft sql server 的本地服务器名称。 13.servicename  返回sql server正在运行的实例名。若当前实例为默认实例,则@@servicename返回mssqlserver;否则返回当前实例名。 14.spid  返回当前用户进程的服务器进程标识符(ID)。该结果与当时系统实际运行情况有关。 15.textsize  返回set语句textsize选项的当前值,它指定select语句返回的text 或image数据的最大长度,心字节为单位。 16.service  返回sql server当前安装的日期、版本和处理类型。 例如:  Use northwind   Select @@service 上同:

系统函数

1.        app_name  如果应用程序进行了设置,返回当前会话的应用程序名称。 例如:         Use northwind          Go         Declare @currentapp varchar(35)   //声明局部变量保存函数返回值         Set @currentapp = app_name()   //调用函数返回当前应用程序的名称         Select @currentapp  // 显示应用程序的名称 2.        case  计算条件列表并返回多个可能结果表达式之一。 数据原型:         Case input_expression                When  when_expression then result_expression                [….n]                Else else_result_expression                      End 3.        cast  将某种数据类型的表达式显式转换为另一种数据类型。 原型:        Cast (expression as data_type) 4.        convert  将某种数据类型的表达式显式转换为另一种数据类型。 原形:         Convert (data_type[(length)],expression [,style]) 5.        coalesce  返回参数中第一个非空表达式。 例如:        Use northwind        Select cast(coalesce(region,companyname) as char) ‘companyregion’        From suppliers 6.        collationproperty  返回给定排序规则的属性。 原型:         Collationproperty (collation_name,property)        例如:               Use northwind               Select  collationproperty(‘traditional_spanish_cs_as_ks_ws’,’codepage’) 7.        current_timestamp  返回当前的日期和时间。 8.        current_user  返回当前的用户名。 9.        datalength  返回任何表达式所占用的字节数。 10.    @@error  返回最后执行的transact-sql语句的错误代码。 例如:         Use northwind          Declare @del_error int, @ins_error int  //声明局部变量保存函数返回结果         Begin tran  //开始一个事务         Delete shippers  //执行delete操作         Where shippers=6           Select @del_error = @@error   //设置变量保存delete错误操作         Insert into shippers(shipperid,companyname)  //执行insert操作         Values(6,’microsoft’)         Select @ins_error = @@error  设置变量保存insert操作错误         If @del_error = 0 and @ins_error=0   //测试返回值         Begin         Print ‘the author information has been replaced’   //如果以上两个操作全部成功, 则提交事务。         Commit tran         End         Else    //以上两操作失败         Begin                 If @del_error<>0    //判断是否delete操作失败                Print ‘an error occurred during execution of the delete’  //打印输出信息                If @ins_error <>0   //判断是否insert 操作失败                Print ‘an error occurred during execution of the insert’  //打印输出信息         Rollback tran   //事务回滚         end 11.    fn_helpcollations  //返回sql server 2000支持的所有排序规则的列表。 例如:        Use northwind        Select * from ::fn_helpcollations  //显示函数返回的系统所有排序规则列表 12.    fn_serversshareddrives  返回由群集服务器使用共享驱动器名称。 13.    fn_virtualfilestats  返回对数据库文件(包括日志文件)的I/O统计。 原型:         Fn_virtualfilestats([@databaseid=]databasei_d,[@fileid=] file_id)  返回的参数说明:

Column Name

数据类型

描述

DbId smallint 数据库 ID FileId smallint 文件 ID TimeStamp int 提取数据的时间 NumberReads bigint 在文件上发出的读取次数 NumberWrites bigint 在文件上写入的次数 BytesRead bigint 在文件上发出的读取字节数 BytesWritten bigint 在文件上写入的字节数 IoStallMS bigint 用户等待在文件上完成 I/O 活动的总计时间(以毫秒为单位) 例如:   Use master   Declare @dbid int   Select @dbid=dbid from master..sysdatabases    Where name=’northwind’   Use northwind      Select * from ::fn_virtualfilestats(@dbid,1) 14. formatmessage  从sysmessage 现有的消息构造消息。 原型:   Formatmessage(msg_number,param_value [,….n])  例如:   Use master   Exec sp_addmessage 50001,16,N’the number of rows in %s is %1d’,   //执行存储过 程,增加一条客户信息   @lang = ‘us_english’   Use northwind   Declare @val varchar(100)   //声明变量保存返回值   Set @val=formatmessage(50001,’table1’,5)  // 构造文本消息   Select @val 15. getansinull  返回会话的数据库的默认为空性。 原型:   Getansinull([‘database’]) 16. host _id  返回工作站标识号。 17. host_name 返回工作站名称。 原型:   Host_name() 例如:   Use northwind    Select host_name() 18. ident_current  返回任何会话和任何作用域中的指定表最后生成的标识值。 原型:   Ident_current(‘table_name’)  例如:   Use northwind   Select inde_current(‘shippers’) 19. ident_incr  返回指定表或视图增量值(返回形式为numeric(@@maxpercision,0)),该值 是在带有标识列的表或视图中创建标识列是指定的。  原型:   Ident_incr(‘table_or_view’)  例如:   Use northwind   Select ident_incr(‘shippers’) 20. ident_seed  返回指定的表或视图增量值种子值(返回形式numeric(@@maxprcision,0)),   该值是在带有标识列的表或视图中创建标识列是指定的。 21. @@identity  返回最后插入的标识值。  例如:   Use northwind   Set identity_insert shippers on   Insert into shippers (shipperid,companyname)   Values(6,’microsoft’)   Select @@identity  //显示返回最后插入的标识值   Delete from shippers where shipperid=6 22 . identity  有在带有into table 子句的select 语句中,以将标识列插入到新表中。 原型:  Identity(data_type  [, seed,increment]) 例如:  Use northwind  Select productname, identity(smallint,100,1) as productID,unitprice  Into test  From products  Drop table test 24. isdate  确定输入表达式是否为有效的日期。 原型:   Isdate(expression) 25. isnull  使用指定的值替换null。 原型:   Isnull(check_expression,replacement_value) 26. newid  创建uniqueidentifier类型的唯一值。 Declare @myid uniqueidentifiler Set @myid =newid() Print ‘value of @myid is : ’+ convert(varchar(255),@myid) 27. nullif  如果两个指定的表达式相等,则返回的是空值;如果不相等则返回第一个表达式。 原型:   Nullif(expressiion,exprssion) 28. parsename  返回对象的指定部分。 原型:   Parsename(‘object_name’,object_piece) 参数说明:

Value

描述

1 对象名 2 所有者名称 3 数据库名称 4 服务器名称 例如:   Use northwind   Select parsename(‘pubs..products’,1) as ‘object name’   Select parsename(‘pubs..products’,2) as ‘object name’   Select parsename(‘pubs..products’,3) as ‘object name’   Select parsename(‘pubs..products’,4) as ‘object name’   29.    permissions  返回一个包含位图的值,表明当前用户的语句、对象或列的权限。   原型:           Permissions([objectid[, ‘column]])   参数说明: 下表显示语句权限所使用的位(未指定 objectid)。

位(十进制)

位(十六进制)

语句权限

1 0x1 CREATE DATABASE(仅限于 master 数据库) 2 0x2 CREATE TABLE 4 0x4 CREATE PROCEDURE 8 0x8 CREATE VIEW 16 0x10 CREATE RULE 32 0x20 CREATE DEFAULT 64 0x40 BACKUP DATABASE 128 0x80 BACKUP LOG 256 0x100 保留 下表显示当仅指定 objectid 时,返回的对象权限所使用的位。

位(十进制)

位(十六进制)

语句权限

1 0x1 SELECT ALL 2 0x2 UPDATE ALL 4 0x4 REFERENCES ALL 8 0x8 INSERT 16 0x10 DELETE 32 0x20 EXECUTE(仅限于过程) 4096 0x1000 SELECT ANY(至少一列) 8192 0x2000 UPDATE ANY 16384 0x4000 REFERENCES ANY 下表显示当同时指定 objectid 和 column 时,返回的列级对象权限所使用的位。

位(十进制)

位(十六进制)

语句权限

1 0x1 SELECT 2 0x2 UPDATE 4 0x4 REFERENCES 例如:   Use northwind   If permissions()&2=2   Begin     Print ‘the current user can create a table.’    Create table test (coll int)   End   Else     Print ‘error :the current user cannot create a table.’   Drop table test  30. @@rowcount  返回受上一语句影响的行数。 例如:   Use northwind   Set identity_insert shippers off   Insert into shippers values(‘ibm’,null)   Select @@rowcounat   From shippers  Delect from shippers where companyname = ‘ibm’ 31. rowcount_big  返回受执行的最后一个语句影响的行数。使用和@@rowcount一样。 32. scope_identity  返回插入到同一作用域中的identity列中的最后一个identity值。 33. serverproperty  返回有关服务器实例的属性信息。 34. sessionproperty  返回会话的set 选项设置。 原型:   Sessionproperty(option)  Option参数:

选项

描述

ANSI_NULLS 指定是否对空值上的等号 (=) 和不等号 (<>)应用遵从 SQL-92 标准行为。 1 = ON 0 = OFF ANSI_PADDING 控制列存储小于定义的列大小的值的方式,以及列存储在字符串和 binary 数据中有尾随空格的值的方式。 1 = ON 0 = OFF ANSI_WARNINGS 指定是否对某些情况(包括被零除和算术溢出)生成错误信息或警告应用 SQL-92 标准行为。 1 = ON 0 = OFF ARITHABORT 确定在执行查询过程中发生溢出或被零除的错误时是否终止查询。 1 = ON 0 = OFF CONCAT_NULL_YIELDS_ NULL 控制是将串联结果视为空值还是空字符串值。 1 = ON 0 = OFF NUMERIC_ROUNDABORT 指定当表达式中的四舍五入导致精度降低时是否生成错误信息和警告。 1 = ON 0 = OFF QUOTED_IDENTIFIER 指定是否遵从 SQL-92 关于使用引号分隔标识符和文字字符串的规则。 1 = ON 0 = OFF <任何其它字符串> NULL = 无效的输入

35. session_user  允许在末指定默认值时,将系统为当前会话的用户名提供的值插入到表 中。还允许在查询、错误信息等中使用用户名。  例如:   Use northwind   Declare @session_usr char(30)   Set @session_usr = session_user   Select ‘this session’’ s current user is : ’ + @session_usr 36. stats_date  返回最后一次更新指定索引统计的日期。 例如:   Use nortywind   Create index ship_index1 on shippers(shipperid,companyname)   Waitfor delay ’00:00:20’   Drop index shippers.ship_index1   Select ‘index name’=i.name, ‘statisticcs date ’= stats_date(i.id,i.indid)   From sysobjects o ,sysindexes i   Where o.name= ‘shippers’ and o.id=i.id 37. system_user  返回登录标识名称。 38. @@trancount  返回当前连接的活动事务数。 39. user_name 返回给定标识号的用户数据库用户名。 例如:use nortywind   Select user_name(2)   Select user_name()   Select name from sysusers where name=user_name(1)

系统统计函数 

1.cpu_busy  返回自上次启动microsoft sql server 以来CUP的工作时间。  2.idle  返回microsoft sql server 自上次启动后闲置的时间。  3.io_busy  返回microsoft sql server 自上次启动后用于执行输入和输出操作的时间。  4.packet_errors  返回microsoft sql server 自上次启动后,在microsoft sql server 连接上发生的网络数据包错误数。  5.pack_received  返回microsoft sql server 自上次启动后从网络上读取的输入数据包数目  6.pack_sent  返回sql server自上次启动后,写到网络上的输出数据包数目。  7.timeticks  返回一刻度的微秒数。  8.total_errors  返回sql server 自上次启动后,所遇到的磁盘读/写错误数。  9.total_read  返回microsoft sql server 自上次启动后读取磁盘的次数。  10.total_write 返回 microsoft sql server 自上次启动后写入磁盘的次数。

事务、游标、存储过程及触发器  

事务的使用:   1.begin distributed transaction  指定一个事务的起始。   原型:           Begin destributed tran [ saction] [transaction_name! @tran_name_variable]   例如:           Use northwind            Begin destributed transaction  //开始一个分布式事务           Update empoyees       //对表empolees 进行更新           Set firstname=’mcdonald’ where homephone = ‘(206) 555-9875’           Commit transaction    //结束事务           Go   2.commit transcation 指明事务结束。   3.rollback transcation  撒销对数据库作出的所有改变,返回到事务开始之前的状态。   原型:           Rollback [tran [saction] [transaction_name] @tran_name_variable | savepoint_name |   @savepoint_variable]          参数说明:           Transadtion 给begin transaction上的事务指派的名称。           @tran_name_bariable  用户定义的、含有有效事务名称的变量名称。           Savepoint_name  是来自SAVE TRANSACTION语句的svepoint_name。           @savepoint_variable 是用户定义的、含有有效保存点名称的变量的名称。         例如:           Begin transaction royaltychange  //事务开始           Update titleauthor  //更新表               Set royaltyper = 65   //重设参数               From titleauthor,titles                Where royaltyper=75                    And titleauthor.title_id=titles.title_id                   And title=’The Gourmet Microwave’           Update titleauthor               Set royaltype = 15               From titleauthor, titles               Where royaltyper=25               And titleauthor.title_id=titles.title_id               And title = ‘The Gourmet Microwave’           Save transaction percentchanged  //在事务内设置保存点           Update titles                Set price = price* 1.1               Where title =’The Gourmet Microwave’           Select (price * royalty * ytd_sales)* royaltyper               From titles,titleauthor               Where title=’The Gourmet Microwave’               And titles.title_id=titleauthor.title_id           Rollback transaction percentchanged  //回到先前保存过的保存点           Commit transaction   // 事务结束   4.save transaction  在事务内设置保存点。   5.commit work  标志事务的结束。   6.rollback work  将用户的事务回滚到事务的起点。    游标的使用:   1.declare cursor  定义游标结构并分配资源。   原型:       Declate cursor_name [insensitive] [scorll] cursor for select_statement [for { read     Only | update }[of  column _list]]                或者:               Declare cursor_name cursor [local | global] [forward_only | scroll] [static | keyset |   dynamic] [read_only | scroll_locks | optimistic] for [select _statement   [ for {read only | update } [of column_list]]]           参数说明:           INSENSITIVE  指明要为检索到的结果集建立一个临时拷贝,以后的数据从这个临时拷贝中获取。原有基表中数据发生了改变,对于游标而言是不可见的。这种不敏感的游标不允许数据更改。           SCROLL  指明游标可以在任意方向上滚动。忽略该选项,则游标只能向前滚动。           SELECT_SATAEMENT  指明SQL语句建立的结果集。           READ ONLY  指明在游标结果集中不允许进行数据更改。           UPDATE  指明游标结果集可以进行修改。           OF COLUMN_LIST  指明结果集中可以进行修改的列。缺省时(使用UPDATE关键字),所有的列都可进行修改。           LOCAL  指明游标是局部的,只能在它所声明的过程中使用。全局的游标在连接激活的任何时候都是可用的。只有池连接结束时,才不再可用。           GLOBAL 使用游标对于整个连接全局可见。           FORWARD_ONLY  指明游标只能向前滚动。           STATIC  与INSENITIVE的游标相同。           KEYSET  指明选取的行的顺序。           DYNAMIC  指明游标反映所有对结果集的修改。           SCROLL_LOCK  对修改或删除加锁。保证游标操作成功。           OPTIMISTIC  指明哪些通过游标进行的修改或者删除将不会成功。       例如:           Use northwind            Go            Declare customers_cursor cursor    //定义游标           For select companyname , address,phone  //选择部分属性           From customers            Where city=’london’           For read only  //只读游标           Deallocate customers_cursor   //删除游标   2.deallocate  删除游标定义,释放资源。   3.open  打开游标。   原型:       Open { { [global]  cursor_name } | cursor_variable_name }       例如:           Use northwind            Go           Declare employee_cursor cursor for   //定义游标           Select lastname,firstname            From northwind .dbo.employees    Where firstname like ‘m%’   Open employee_cursor   // 打开游标   Fetch next from employee_cursor   //利用游标提取数据   While @@fetch_status=0   //当利用FETCH提取数据成功时,运用循环提取下一条数据   Begin   //循环体开始处       Fetch next from employee_cursor   End    //循环体结束   close employee_cursor    //关闭游标   Deallocate employee_cursor   // 释放游标   4.close  关闭游标并释放结果集。   5.fetch  通过游标从结果集中取值。        原型:           Fetch [next | prior | first | last | absolute {n | @nvar} | relative {n | @nvar}] from [global]                Cursor_name} | cursor_variable_name } [into @variable_name ] [,……n]       参数说明:           NEXT  指明从当前的行的下一行取值。           PRIOR  指明人当前行的前一行取值。        &n, bsp;  FIRST  结果集的第一行。           LAST   结果集的最后一行。           ABSOLUTE  n表示结果集中的第n行。该行数同样可以通过一个局部变量传播。           RELATIVE  n表示要取出折行在当前的前n行或后n行的位置上。如果该值为正数则要取出的行在当前行前n行的位置上,如果该值为负数,则返回当前行的后n行。           INTO @cursor_variable_name  表示游标列值存储的地方的变量列表。变量的数据类型也应该与被选择列的数据类型相同。直到下一次使用FETCH语句之前,变量中的值都会一直保持。       函数返回值:           利用@@FETCH_STATUS返回FETCH状态。           0:FETCH 成功。           1:FETCH 失败或超出设置范围。           2:提取的数据行丢失。       例如:           Open employee_cursor           Fetch next from employee_cursor           While @@fetch_status = 0            Begin            Fetch next from employee_cursor           End                Close employee_curssor    存储过程的使用:   1.create procedure  创建存储过程。   原型:           Create proc [edure] procedure_name [; number]           [{@parameter data_type} [varying] [ = default] [output]] [,…n]           [ with {recomple | enplication | recompile , encryption }] [for replication]           As sql_statement […n]       参数说明:           Procedure_name  新存储的过程。对于数据库及其所有者必须惟一。创建局部临时过程,在procedure_nameu前加一个编号符#;创建全局临时过程,在procedure_nameu前加两个编号符##。完整的名称不能超过128个字符。           Number  对同名的过程分组。           @parameter  过程中的参数。           Data_type  参数的数据类型。除table之外的其他所有数据类型均可以用伯存储过程的参数。Cursor数据类型只能用于output参数。

 
关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    109966博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0560s