﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-用手做事，用心做事，用生命做事-随笔分类-sqlserver</title><link>http://www.blogjava.net/wyxdeniro/category/27587.html</link><description>舍我其谁</description><language>zh-cn</language><lastBuildDate>Mon, 26 Nov 2007 14:50:07 GMT</lastBuildDate><pubDate>Mon, 26 Nov 2007 14:50:07 GMT</pubDate><ttl>60</ttl><item><title>sql学习笔记(一)----Transact语言 </title><link>http://www.blogjava.net/wyxdeniro/archive/2007/11/26/163270.html</link><dc:creator>王永庆</dc:creator><author>王永庆</author><pubDate>Mon, 26 Nov 2007 09:32:00 GMT</pubDate><guid>http://www.blogjava.net/wyxdeniro/archive/2007/11/26/163270.html</guid><wfw:comment>http://www.blogjava.net/wyxdeniro/comments/163270.html</wfw:comment><comments>http://www.blogjava.net/wyxdeniro/archive/2007/11/26/163270.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wyxdeniro/comments/commentRss/163270.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wyxdeniro/services/trackbacks/163270.html</trackback:ping><description><![CDATA[<span style="color: #993300">Transact-SQL中可以使用两种变量，一种是局部变量(Local Variable),另一种是全局变量(Global Variable).<br />
(1)、局部变量必需以"@"开头，而且必需先用DECLARE命令说明后才可使用。<br />
例如：<br />
DECLARE @变量名 变量类型[,@变量名 变量类型...]<br />
在给变量赋值的时候必需使用select或者set命令来设定变量的值<br />
select @局部变量=变量值<br />
set @局部变量=变量值<br />
(2)、全局变量不是由用户的程序定义的，他们是在服务器级定义的，只能使用预先说明及定义的全局变量，引用全局变量时，必需以"@@"开头，局部变量的名称不能与全局变量的名称相同。</span>
<img src ="http://www.blogjava.net/wyxdeniro/aggbug/163270.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wyxdeniro/" target="_blank">王永庆</a> 2007-11-26 17:32 <a href="http://www.blogjava.net/wyxdeniro/archive/2007/11/26/163270.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sql学习笔记(二)-----游标的使用 </title><link>http://www.blogjava.net/wyxdeniro/archive/2007/11/26/163271.html</link><dc:creator>王永庆</dc:creator><author>王永庆</author><pubDate>Mon, 26 Nov 2007 09:32:00 GMT</pubDate><guid>http://www.blogjava.net/wyxdeniro/archive/2007/11/26/163271.html</guid><wfw:comment>http://www.blogjava.net/wyxdeniro/comments/163271.html</wfw:comment><comments>http://www.blogjava.net/wyxdeniro/archive/2007/11/26/163271.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wyxdeniro/comments/commentRss/163271.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wyxdeniro/services/trackbacks/163271.html</trackback:ping><description><![CDATA[<span style="color: #993300">每一个游标必需有4个组成部分：<br />
1、DECLARE 游标<br />
2、OPEN 游标<br />
3、从一个游标中FETCH信息<br />
4、CLOSE或DEALLOCATE 游标<br />
使用DECLARE来声明一个游标，声明一个游标主要包括以下主要内容：<br />
游标名字，数据来源(表和列)，选取条件，属性(仅读或可修改)<br />
语法格式：<br />
DECLARE cursor_name [INSENSITIVE][SCROLL]CURSOR<br />
FOR select_statement<br />
[FOR {READ ONLY|UPDATE[OF column_name[,...n]]}]<br />
(1)、corsor_name:指游标的名字。<br />
(2)、INSENSITIVE:会将游标定义所选取出来的数据记录存放在一临时表内，因此对基本表的修改并不影响游标提取的数据，即游标不会随着基本表内容的改变而改变，同事也无法通过游标来跟新基本表。如果不使用该保留字，那么对基本表的更新、删除、都会反映到游标中。<br />
注意：在SELECT语句中使用DISTINCT、GROUP BY、HAVING、UNION语句游标将自动设定为INSENSITIVE选项。 <br />
(3)、SCROLL:表明所有的提取操作都可用。如果不使用它，那么只能进行NEXT提取操作。<br />
(4)、select_statement:定义结果集的SELECT语句。<br />
(5)、READ ONLY:表明不允许游标内的数据被更新。<br />
(6)、UPDATE[OF column_name[,...n]]：定义在游标中可被修改的列。<br />
<br />
当游标被成功打开以后就可以从游标中逐行地读取数据以进行相关处理从游标<br />
中读取数据主要使用FETCH 命令其语法规则为<br />
FETCH<br />
[ [ NEXT | PRIOR | FIRST | LAST<br />
| ABSOLUTE {n | @nvar}<br />
| RELATIVE {n | @nvar} ]<br />
FROM ]<br />
{ { [GLOBAL] cursor_name } | @cursor_variable_name}<br />
[INTO @variable_name[,...n] ]<br />
各参数含义说明如下<br />
􀀠 NEXT<br />
返回结果集中当前行的下一行并增加当前行数为返回行行数如果FETCH NEXT<br />
是第一次读取游标中数据则返回结果集中的是第一行而不是第二行<br />
􀀠 PRIOR<br />
返回结果集中当前行的前一行并减少当前行数为返回行行数如果FETCH PRIOR<br />
是第一次读取游标中数据则无数据记录返回并把游标位置设为第一行<br />
􀀠 FIRST<br />
返回游标中第一行<br />
􀀠 LAST<br />
返回游标中的最后一行<br />
􀀠 ABSOLUTE {n | @nvar}<br />
如果n 或@nvar 为正数则表示从游标中返回的数据行数如果n 或@nvar 为负数<br />
则返回游标内从最后一行数据算起的第n 或@nvar 行数据<br />
若n 或@nvar 超过游标的数据子集范畴则@@FETCH_STARS 返回-1 在该情况下<br />
如果n 或@nvar 为负数则执行FETCH NEXT 命令会得到第一行数据如果n 或@nvar<br />
为正值执行FETCH PRIOR 命令则会得到最后一行数据n 或@nvar 可以是一固定值也<br />
可以是一smallint, tinyint 或int 类型的变量<br />
􀀠 RELATIVE {n | @nvar}<br />
若n 或@nvar 为正数则读取游标当前位置起向后的第n 或@nvar 行数据如果n 或<br />
@nvar 为负数则读取游标当前位置起向前的第n 或@nvar 行数据若n 或@nvar 超过游<br />
标的数据子集范畴则@@FETCH_STARS 返回-1 在该情况下如果n 或@nvar 为负数<br />
则执行FETCH NEXT 命令则会得到第一行数据如果n 或@nvar 为正值执行FETCH<br />
PRIOR 命令则会得到最后一行数据n 或@nvar 可以是一固定值也可以是一smallint, tinyint<br />
或int 类型的变量<br />
􀀠 INTO @variable_name[,...n]<br />
允许将使用FETCH 命令读取的数据存放在多个变量中在变量行中的每个变量必须<br />
与游标结果集中相应的列相对应每一变量的数据类型也要与游标中数据列的数据类型相<br />
匹配<br />
@@FETCH_STATUS 全局变量返回上次执行FETCH 命令的状态在每次用FETCH<br />
从游标中读取数据时都应检查该变量以确定上次FETCH 操作是否成功来决定如何<br />
进行下一步处理@@FETCH_STATUS 变量有三个不同的返回值,如表13-2<br />
表13-2 @@FETCH_STATUS 变量<br />
返回值描 述<br />
0 FETCH 命令被成功执行<br />
-1 FETCH 命令失败或者行数据超过游标数据结果集的范围<br />
-2 所读取的数据已经不存在<br />
在使用FETCH 命令从游标中读取数据时应该注意以下的情况<br />
</span>
<img src ="http://www.blogjava.net/wyxdeniro/aggbug/163271.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wyxdeniro/" target="_blank">王永庆</a> 2007-11-26 17:32 <a href="http://www.blogjava.net/wyxdeniro/archive/2007/11/26/163271.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>