SQLServer7.0入门(七)

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

 i. 声明游标
在这一步中,需要指定游标的属性和根据要求产生的结果集。有两种方法可以指定一个游标。
形式1  (ANSI92)
DECLAREcursor_name[INSENSITIVE][SCROLL]CURSOR
FORselect_statement
[FOR{READONLY|UPDATE][OFcolumn_list]}]
形式2
DECLAREcursor_nameCURSOR
[LOCAL|GLOBAL]
[FORWARD_ONLY|SCROLL]
[STATIC|KEYSET|DYNAMIC]
[READ_ONLY|SCROLL_LOCKS|OPTIMISTIC]
FORselect_statement
[FOR{READONLY|UPDATE][OFcolumn_list]}]
INSENSITIVE关键字指明要为检索到的结果集建立一个临时拷贝,以后的数据从这个临时拷贝中获取。如果在后来游标处理的过程中,原有基表中数据发生了改变,那么它们对于该游标而言是不可见的。这种不敏感的游标不允许数据更改。
SCROLL关键字指明游标可以在任意方向上滚动。所有的fetch选项(first、last、next、relative、absolute)都可以在游标中使用。如果忽略该选项,则游标只能向前滚动(next)。
Select_statement指明SQL语句建立的结果集。TransactSQL语句COMPUTE、COMPUTEBY、FORBROWSE和INTO在游标声明的选择语句中不允许使用。
READONLY指明在游标结果集中不允许进行数据修改。
UPDATE关键字指明游标的结果集可以修改。
OFcolumn_list指明结果集中可以进行修改的列。缺省情况下(使用UPDATE关键字),所有的列都可进行修改。
LOCAL关键字指明游标是局部的,它只能在它所声明的过程中使用。
GLOBAL关键字使得游标对于整个连接全局可见。全局的游标在连接激活的任何时候都是可用的。只有当连接结束时,游标才不再可用。
FORWARD_ONLY指明游标只能向前滚动。
STATIC的游标与INSENSITIVE的游标是相同的。
KEYSET指明选取的行的顺序。将从结果集中创建一个临时关键字集。如果对的非关键字列进行了修改,则它们对游标是可见的。因为是固定的关键字集合,所以对关键字列进行修改或新插入列是不可见的。
DYNAMIC指明游标将反映所有对结果集的修改。
SCROLL_LOCK是为了保证游标操作的成功,而对修改或删除加锁。
OPTIMISTIC指明哪些通过游标进行的修改或者删除将不会成功。
注意:
·如果在SELECT语句中使用了DISTINCT、UNION、GROUPBY语句,且在选择中包含了聚合表达式,则游标自动为INSENSITIVE的游标。
·如果基表没有唯一的索引,则游标创建成INSENSITIVE的游标。
·如果SELECT语句包含了ORDERBY,而被ORDERBY的列并非唯一的行标识,则DYNAMIC游标将转换成KEYSET游标。如果KEYSET游标不能打开,则将转换成INSENSITIVE游标。使用SQLANSI-92语法定义的游标同样如此,只是没有INSENSITIVE关键字而已。

 ii. 打开游标
打开游标就是创建结果集。游标通过DECLARE语句定义,但其实际的执行是通过OPEN语句。语法如下:
OPEN{{[GLOBAL]cursor_name}|cursor_variable_name}
GLOBAL指明一个全局游标。
Cursor_name是被打开的游标的名称。
Cursor_variable_name是所引用游标的变量名。该变量应该为游标类型。
在游标被打开之后,系统变量@@cursor_rows可以用来检测结果集的行数。@@cursor_rows为负数时,表示游标正在被异步迁移,其绝对值(如果@@cursor_rows为-5,则绝对值为5)为当前结果集的行数。异步游标使用户在游标被完全迁移时仍然能够访问游标的结果。

 iii. 从游标中取值
在从游标中取值的过程中,可以在结果集中的每一行上来回移动和处理。如果游标定义成了可滚动的(在声明时使用SCROLL关键字),则任何时候都可取出结果集中的任意行。对于非滚动的游标,只能对当前行的下一行实施取操作。结果集可以取到局部变量中。Fetch命令的语法如下:
FETCH[NEXT|PRIOR|FIRST|LAST|ABSOLUTE{n|@nvar}|RELATIVE{n|@nvar}]1

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一部分 概觀篇 1. 微軟SQL Server的發展歷史:1989到1999 [加入我的離線書架] . Ron的故事 . Kalen的故事 . Microsoft SQL Server發行 . 發展過程中的角色 . OS/2和合作伙伴間的戰火(Friendly Fire) . 4.2版 . SQL Server For Windows NT . 成功所帶來的改變 . 合作開發的結束 . SQL95的任務 . 下一個版本 . Sphinx的秘密 . 新的未來 2. SQL Server導覽 [加入我的離線書架] . SQL Server引擎 . DBMS強制的資料完整(Data Integrity) . 交易(Transaction)處理 . 對稱(Symmetric)伺服器架構 . 安全(Security) . 高可用性(Availability) . 分散式資料處理 . 資料複製(Replication) . 系統管理 . SQL Server公用程式(Utility)與延伸部分(Extension) . 用戶端開發介面 . 總結 第二部分 架構概觀篇 3. SQL Server架構 [加入我的離線書架] . SQL Server引擎 . 記憶體管理 . 交易日誌記錄(Transaction Logging)與回復(Recovery) . SQL Server核心(Kernel)以及與作業系統的互動(Interaction) . 總結 第三部分 使用Microsoft的SQL Server 4. 規劃及安裝SQL Server [加入我的離線書架] . SQL Server的版本 . 硬體指引 . 硬體元件 . 作業系統 . 檔案系統 . 安全性與使用者身份(Context) . 授 權 . 網路協定 . 字元集與排序順序 . 安裝SQL Server . 安裝後的基本組態 . 遠端與不在場安裝 . 總結 5. 資料庫與資料庫檔案 [加入我的離線書架] . 特殊系統資料庫 . 資料庫檔案 . 建立資料庫 . 擴增(Expand)與縮減(Shrink)資料庫 . 修改交易日誌(log)檔案大小 . 資料庫檔案群組(Filegroups) . 修改資料庫 . 資料庫的內部 . 資料庫選項 . 其他資料庫考量 . 總結 6. 表格(Table) [加入我的離線書架] . 建立表格 . 內部儲存體-細節 . 索 引 . 使用者自訂型態 . Identity屬性 . 限制(Constraints) . 修改表格 . 暫存表格 . 總結 7. 查詢資料 [加入我的離線書架] . 查詢(SELECT)敘述 . NULL的處理 . 子查詢(Subquery) . 檢視表和導出表格(Views and Derived Tables) . 其它的搜尋運算子 . 總結 8. 修改資料 [加入我的離線書架] . 基本的修改動作 . 內部資料修改 . 總結 9. Transact-SQL程式設計 [加入我的離線書架] . 將Transact-SQL當作程式語言 . Transact-SQL程式設計構詞兒─基礎 . 總結 10. 批次、交易、預儲程序與觸發 [加入我的離線書架] . 批次(Batch) . 交易(Transaction) . 預儲程序 . 執行批次或預儲程序預儲什麼? . 觸發(Trigger) . 預儲程序與觸發的除錯(Debugging) . 使用Text與Image資料 . 環境的考量 . 總 結 11. 游標(Cursor) [加入我的離線書架] . 游標基本概述 . 游標與ISAM . 游標模式 . 適當的使用游標 . 使用Transact-SQL游標 . 游標變數 . 總結 12. Transact-SQL範例與難題 [加入我的離線書架] . 使用觸發器(Trigger)來實作參考動作(Referential Actions) . 難題(Brainteaser) . 總結 13. 鎖 定 [加入我的離線書架] . 鎖定管理員(Lock Manager) . 使用者資料的鎖定型別 . 鎖定相容性 . 結合連線(Bound Connection) . 列階層與分頁階層鎖定 . 鎖定提示(Hints)與追蹤旗標(Trace Flags) . 總結 第四部分 效能與調整篇 14. 查詢效能最佳化 [加入我的離線書架] . 開發小組 . 應用程式與資料庫設計 . 規劃尖峰使用量 . 了解互動系統的回應時間 . 建立原型(Prototyping)、標準效能評估 (Benchmarking) 與測試 (Testing) . 建立有用的索引 . 使用預儲程序(stored procedure)與快取機制 . 同時性(concurrency)與 一致性 (consistent) 互抵 (trade-off) . 解決阻擋(Blocking)問題 . 解決死結問題 . 分離OLTP與DSS應用程式 . 查詢最佳化 . 監控查詢效能 . 總結 15. 設定與效能監看 [加入我的離線書架] . Windows NT組態設定 . SQL Server組態設定 . 系統維護 . 監看系統行為 . 總結 建議閱讀書目 [加入我的離線書架]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值