- 浏览: 1589339 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (289)
- java 语法基础 (51)
- spring (8)
- mvc struct /Ant --build.xml (8)
- SOA (0)
- oracle 9i/10g (23)
- sql server 2000-2005 (3)
- 数据库基础知识 (6)
- 设计模式与软件架构 (10)
- Hibernate 持久化 (9)
- J2SE/J2EE/J2ME/AJAX 技术 (8)
- JSF 技术 (3)
- JAVA 图形化 (0)
- JMS (40)
- Eclipse 3.2 IDE 开发技巧 (13)
- 项目处理方法集合 (2)
- html/jsp/javascript (2)
- Unix/Linux (9)
- j2me/ARM/windriver/嵌入式 (4)
- 电信科学 (8)
- jsp (1)
- c/c++ (1)
- LZW压缩算法(java) (2)
- Android (77)
- 版本管理git/svn (2)
最新评论
-
huihai:
有demo吗?
NamingStrategy实现动态表名映射 -
cangbaotu:
推荐给大家一些有用的爬虫源码:https://github.c ...
网络爬虫(源代码参考) -
tuspark:
除了.classpath文件以外,.project文件也应该了 ...
Eclipse .classpath文件浅谈 -
tuspark:
造成eclipse自动关闭的原因有很多,这里有很多介绍:ecl ...
eclipse 自动关闭 解决方案 -
DEMONU:
网上都是这些,这种文章。。。
ActiveMQ中的消息持久性
与windows或DOS的“光标”不同,MS-SQL的游标是一种临时的数据库对象,既对可用来旋转储存在系统永久表中的数据行的副本,也可以指向储存在系统永久表中的数据行的指针。
游标为您提供了在逐行的基础上而不是一次处理整个结果集为基础的操作表中数据的方法。
1.如何使用游标
1)定义游标语句 Declare <游标名> Cursor For
2)创建游标语句 Open <游标名>
3)提取游标列值、移动记录指针 Fetch <列名列表> From <游标名> [Into <变量列表>]
4)使用@@Fetch_Status利用While循环处理游标中的行
5)删除游标并释放语句 Close <游标名>/Deallocate <游标名>
6)游标应用实例
--定义游标
Declare cur_Depart Cursor
For Select cDeptID,cDeptName From Department into @DeptID,@DeptName
--创建游标
Open cur_Depart
--移动或提取列值
Fetch From cur_Depart into @DeptID,@DeptName
--利用循环处理游标中的列值
While @@Fetch_Status=0
Begin
Print @DeptID,@DeptName
Fetch From cur_Depart into @DeptID,@DeptName
End
--关闭/释放游标
Close cur_Depart
Deallocate cur_Depart
2.语句的详细及注意
1)定义游标语句
Declare <游标名> [Insensitive] [Scroll] Cursor
For <Select 语句> [FOR {Read Only | Update [ OF <列名列表>]}]
Insensitive DBMS创建查询结果集数据的临时副本(而不是使用直接引用数据库表中的真实数据行中的列)。游标是Read Only,也就是说不能修改其内容或底层表的内容;
Scroll 指定游标支持通过使用任意Fetch 选项(First Last Prior Next Relative Absolute)选取它的任意行作为当前行。如果此项省略,则游标将只支持向下移动单行(即只支持游标的Fetch Next);
Select语句 定义游标结果集的标准 SELECT 语句。在游标声明的 <Select语句>内不允许使用关键字 COMPUTE、COMPUTE BY、FOR BROWSE 和 INTO;
Read Only 防止使用游标的用户通过更新数据或删除行改变游标的内容;
Update 创建可更新游标且列出值能被更新的游标列。如果子句中列入了任意列,则只有被列入的列才能被更新。如果Declare Cursor语句中只指定的UPDATE(没有列名列表),则游标将允许更新它的任何或所有列。
Declare cur_Depart Cursor
For Select * From Department For Update OF cDeptID,cDeptName
2)提取游标列值、移动记录指针语句
Fetch [Next | Prior | First | Last | {Absolute <行号>} | {Relative <行号>}]
From <游标名> [Into <变量列表……>]
每次执行Fetch语句时,DBMS移到游标中的下一行并把游标中的列值获取到Into中列出的变量中。因此Fetch语句的Into子句中列出的变量必须与游标定义中Select 语句中的列表的类型与个数相对应;
仅当定义游标时使用Scroll参数时,才能使用Fetch语句的行定位参数(First Last Prior Next Relative Absolute);如果Fetch语句中不包括参数Next | Prior | First | Last,DBMS将执行默认的Fetch Next;
Next 向下、向后移动一行(记录);
Prior 向上、向前移动一行(记录);
First 移动至结果集的第一行(记录);
Last 移动至结果集的最后一行(记录);
Absolute n 移动到结果集中的第n行。如果n是正值,DBMS从结果集的首部向后或向下移动至第n行;如果n是负数,则DBMS从结果集的底部向前或向上移动n行;
Fetch Absolute 2 From cur_Depart Into @DeptID,@DeptName
Relative n 从指针的当前位置移动n行。如果n是正值,DBMS将行指针向后或向下移动至第n行;如果n是负数,则DBMS将行指针向前或向上移动n行;
Fetch Relative 2 From cur_Depart Into @DeptID,@DeptName
3)基于游标的定位DELETE/UPDATE语句
如果游标是可更新的(也就是说,在定义游标语句中不包括Read Only 参数),就可以用游标从游标数据的源表中DELETE/UPDATE行,即DELETE/UPDATE基于游标指针的当前位置的操作;
举例:
--删除当前行的记录
Declare cur_Depart Cursor
For Select cDeptID,cDeptName From Department into @DeptID,@DeptName
Open cur_Depart
Fetch From cur_Depart into @DeptID,@DeptName
Delete From Department Where CURRENT OF cur_Depart
--更新当前行的内容
Declare cur_Depart Cursor
For Select cDeptID,cDeptName From Department into @DeptID,@DeptName
Open cur_Depart
Fetch From cur_Depart into @DeptID,@DeptName
Update Department Set cDeptID=’2007’ + @DeptID Where CURRENT OF cur_Depart
3.游标使用技巧及注意
1)利用Order By改变游标中行的顺序。此处应该注意的是,只有在查询的中Select 子句中出现的列才能作为Order by子句列,这一点与普通的Select语句不同;
2)当语句中使用了Order By子句后,将不能用游标来执行定位DELETE/UPDATE语句;如何解决这个问题,首先在原表上创建索引,在创建游标时指定使用此索引来实现;例如:
Declare cur_Depart Cursor
For Select cDeptID,cDeptName From Department With INDEX(idx_ID)
For Update Of cDeptID,cDeptName
通过在From子句中增加With Index来实现利用索引对表的排序;
游标为您提供了在逐行的基础上而不是一次处理整个结果集为基础的操作表中数据的方法。
1.如何使用游标
1)定义游标语句 Declare <游标名> Cursor For
2)创建游标语句 Open <游标名>
3)提取游标列值、移动记录指针 Fetch <列名列表> From <游标名> [Into <变量列表>]
4)使用@@Fetch_Status利用While循环处理游标中的行
5)删除游标并释放语句 Close <游标名>/Deallocate <游标名>
6)游标应用实例
--定义游标
Declare cur_Depart Cursor
For Select cDeptID,cDeptName From Department into @DeptID,@DeptName
--创建游标
Open cur_Depart
--移动或提取列值
Fetch From cur_Depart into @DeptID,@DeptName
--利用循环处理游标中的列值
While @@Fetch_Status=0
Begin
Print @DeptID,@DeptName
Fetch From cur_Depart into @DeptID,@DeptName
End
--关闭/释放游标
Close cur_Depart
Deallocate cur_Depart
2.语句的详细及注意
1)定义游标语句
Declare <游标名> [Insensitive] [Scroll] Cursor
For <Select 语句> [FOR {Read Only | Update [ OF <列名列表>]}]
Insensitive DBMS创建查询结果集数据的临时副本(而不是使用直接引用数据库表中的真实数据行中的列)。游标是Read Only,也就是说不能修改其内容或底层表的内容;
Scroll 指定游标支持通过使用任意Fetch 选项(First Last Prior Next Relative Absolute)选取它的任意行作为当前行。如果此项省略,则游标将只支持向下移动单行(即只支持游标的Fetch Next);
Select语句 定义游标结果集的标准 SELECT 语句。在游标声明的 <Select语句>内不允许使用关键字 COMPUTE、COMPUTE BY、FOR BROWSE 和 INTO;
Read Only 防止使用游标的用户通过更新数据或删除行改变游标的内容;
Update 创建可更新游标且列出值能被更新的游标列。如果子句中列入了任意列,则只有被列入的列才能被更新。如果Declare Cursor语句中只指定的UPDATE(没有列名列表),则游标将允许更新它的任何或所有列。
Declare cur_Depart Cursor
For Select * From Department For Update OF cDeptID,cDeptName
2)提取游标列值、移动记录指针语句
Fetch [Next | Prior | First | Last | {Absolute <行号>} | {Relative <行号>}]
From <游标名> [Into <变量列表……>]
每次执行Fetch语句时,DBMS移到游标中的下一行并把游标中的列值获取到Into中列出的变量中。因此Fetch语句的Into子句中列出的变量必须与游标定义中Select 语句中的列表的类型与个数相对应;
仅当定义游标时使用Scroll参数时,才能使用Fetch语句的行定位参数(First Last Prior Next Relative Absolute);如果Fetch语句中不包括参数Next | Prior | First | Last,DBMS将执行默认的Fetch Next;
Next 向下、向后移动一行(记录);
Prior 向上、向前移动一行(记录);
First 移动至结果集的第一行(记录);
Last 移动至结果集的最后一行(记录);
Absolute n 移动到结果集中的第n行。如果n是正值,DBMS从结果集的首部向后或向下移动至第n行;如果n是负数,则DBMS从结果集的底部向前或向上移动n行;
Fetch Absolute 2 From cur_Depart Into @DeptID,@DeptName
Relative n 从指针的当前位置移动n行。如果n是正值,DBMS将行指针向后或向下移动至第n行;如果n是负数,则DBMS将行指针向前或向上移动n行;
Fetch Relative 2 From cur_Depart Into @DeptID,@DeptName
3)基于游标的定位DELETE/UPDATE语句
如果游标是可更新的(也就是说,在定义游标语句中不包括Read Only 参数),就可以用游标从游标数据的源表中DELETE/UPDATE行,即DELETE/UPDATE基于游标指针的当前位置的操作;
举例:
--删除当前行的记录
Declare cur_Depart Cursor
For Select cDeptID,cDeptName From Department into @DeptID,@DeptName
Open cur_Depart
Fetch From cur_Depart into @DeptID,@DeptName
Delete From Department Where CURRENT OF cur_Depart
--更新当前行的内容
Declare cur_Depart Cursor
For Select cDeptID,cDeptName From Department into @DeptID,@DeptName
Open cur_Depart
Fetch From cur_Depart into @DeptID,@DeptName
Update Department Set cDeptID=’2007’ + @DeptID Where CURRENT OF cur_Depart
3.游标使用技巧及注意
1)利用Order By改变游标中行的顺序。此处应该注意的是,只有在查询的中Select 子句中出现的列才能作为Order by子句列,这一点与普通的Select语句不同;
2)当语句中使用了Order By子句后,将不能用游标来执行定位DELETE/UPDATE语句;如何解决这个问题,首先在原表上创建索引,在创建游标时指定使用此索引来实现;例如:
Declare cur_Depart Cursor
For Select cDeptID,cDeptName From Department With INDEX(idx_ID)
For Update Of cDeptID,cDeptName
通过在From子句中增加With Index来实现利用索引对表的排序;
发表评论
-
oacle数据库服务器字符集更改步骤
2009-11-20 11:25 192310 数据库服务器字符集更改步骤问题描述:在客户端插入字符“咪 ... -
ResultSet 的Type属性 TYPE_FORWARD_ONLY, TYPE_SCROLL_I
2009-04-10 23:06 13152说明:Statement stmt = con.createS ... -
OracleOraHome92TNSListener 无法启动
2009-03-30 19:44 2937先看如下有没有 如果路径不见了: 1 ... -
oracle导出文件字符集修改
2009-02-22 17:49 7079我们知道在导出文件中,记录着导出使用的字符集id,通过查看导出 ... -
oracle字符集的更改2
2009-02-21 21:47 1665前面我们提到,通过修改props$的方式更改字符集在Oracl ... -
oracle字符集的更改
2009-02-21 20:53 23582. 字符集的更改 数 ... -
oracle 字符集
2009-02-21 16:10 32091、字符集的一些基本知 ... -
Oracle安装的一些问题收集
2009-01-13 17:18 6897Oracle安装的一些问题收 ... -
请教 EXP-00056: 遇到 ORACLE 错误 6550 的问题
2009-01-13 16:43 10986这个问题解决了已经。与其他机器的9201版本进行比对,发现db ... -
Oracle 9i 在Linux 下的安装
2009-01-13 16:42 1882Oracle 9i 在Linux 下的安装 2008-09-0 ... -
Oracle ExpImp导入导出工具性能调优
2008-12-16 14:53 1856Oracle Exp/Imp工具是一个操作简单、方便灵活的备 ... -
Oracle新手常碰到的错误及解决方案
2008-11-27 18:12 12681、ORA-12541:TNS:没有监听器 原因:没有 ... -
存储过程基本语法
2008-11-27 15:46 11811.基本结构 CREATE OR REPLACE PROCE ... -
UTL_FILE
2008-11-27 14:22 3179最近用到了Oracle的包UTL_ ... -
ORACLE SQL PLUS 使用技巧:
2008-11-27 14:05 1984---- 一. ORACLE SQL PLUS 使 ... -
pl/sql中读入一个文本文件到一个UTL_FILE.FILE_TYPE变量中,如何对该变量中的数据
2008-11-27 13:51 2910create or replace procedu ... -
浅谈Oracle数据库的建模与设计
2008-10-17 23:49 1220要开发一个基于数据库的应用系统,其中最关键的一步就是整个系统 ... -
Oracle平台应用数据库系统的设计与开发
2008-10-17 23:47 1361Oracle是目前应用最广泛的数据库系统。一个完整的数据库系 ... -
oracle10g下JDBC驱动包的区别
2008-09-05 18:17 7442oracle10g下JDBC驱动包的区别 2008年06月27 ... -
Oracle触发器应用
2008-08-21 12:57 3118触发器 是特定事件出现的时候,自动执行的代码块。类似于存储过 ...
相关推荐
**MS-SQL JDBC 2.0 知识点详解** MS-SQL JDBC 2.0 是微软提供的Java数据库连接(JDBC)驱动程序,专为与Microsoft SQL Server进行交互而设计。这个版本的驱动程序允许Java应用程序通过JDBC API与SQL Server 2000、...
游标有多种实现方式,包括T-SQL游标、API服务器游标和客户端游标。在T-SQL中创建游标通常使用`DECLARE`语句,例如: ```sql DECLARE @MyCursor CURSOR [LOCAL | GLOBAL] [FORWARD_ONLY | SCROLL] [STATIC | KEYSET |...
### SQL游标原理和使用方法 #### 一、引言 在数据库开发中,当我们需要检索数据时,通常会使用`SELECT`语句。但在某些情况下,我们需要从查询结果集中逐条读取记录,这时就需要用到游标。本文将详细介绍SQL游标的...
在MS SQL SERVER中,游标是一项关键功能,它允许开发者逐行处理查询结果集,而不仅仅是一次性处理所有数据。游标对于那些需要按顺序访问或处理数据的应用场景尤其有用,例如在循环中处理数据记录或者根据当前行状态...
《MS.SQL.Server.2008.技术内幕:T-SQL.查询》是关于Microsoft SQL Server 2008数据库管理系统中T-SQL查询语言的一本深入解析书籍。T-SQL(Transact-SQL)是SQL Server的标准查询语言,它是SQL的扩展,包含了SQL的...
**JDBC for MS-SQL2000** Java Database Connectivity(JDBC)是Java编程语言中用于连接数据库的标准API,它允许Java应用程序与各种类型的数据库进行交互。在本主题中,我们将深入探讨JDBC在与Microsoft SQL Server...
MS-SQL报表生成的通用方法主要涉及SQL查询语言的使用,以及存储过程、动态SQL语句和游标的应用。接下来,将详细阐释这些知识点。 首先,MS-SQL报表生成的起点是数据库中的基础表。在本例中,基础表Table1包含姓名、...
### MS-SQL数据库开发——经典简单应用 在本篇文章中,我们将探讨Microsoft SQL Server(简称MS-SQL)中的一些实用技巧与应用场景。这些技巧涵盖了数据排序、硬盘分区查看、数据加密等多个方面,对于数据库开发者来...
在本文中,我们将深入探讨四个流行的数据库管理系统——MS-SQL、Oracle、MySQL和Informix各自支持的主要数据类型。 MS-SQL(Microsoft SQL Server)提供了多种数据类型,以满足各种数据存储需求: 1. **bit**:...
SQL游标是数据库开发中的一种重要工具,尤其在处理逐条数据操作的场景下显得尤为重要。游标允许程序员按照特定顺序访问查询结果集,并对每一行数据进行独立的操作,如读取、修改、删除等。这与传统的面向集合的...
《Microsoft SQL Server 2008 T-SQL Fundamentals》是针对SQL Server 2008数据库管理系统中T-SQL(Transact-SQL)基础的一份详细教程。T-SQL是SQL Server的主要查询语言,用于数据操作、查询、存储过程编写、事务...
【MS-SQLServer数据库技术实验教案】是针对邢台学院14级计算机科学与技术专业接本学生设计的一门实验课程,旨在通过实践操作加强学生对大型数据库管理系统SQL Server 2005的理解和应用能力。这门课程共32学时,1学分...
游标 ms sql 例子----- 大概模式 临时表使用等-——---
在本课程中,我们主要关注的是Microsoft SQL Server(简称MS-SQL)的使用,特别是针对TSQL(Transact-SQL)的学习与实践。TSQL是SQL的一个扩展,由微软开发,广泛应用于MS-SQL数据库的管理和操作。在这个压缩包文件...
本篇将深入探讨SQL Server 2005中的存储过程、游标以及游标嵌套的综合应用。 存储过程(Stored Procedure)是预编译的SQL语句集合,它们封装了特定的功能,可以多次调用,提高了代码的复用性和执行效率。在SQL ...
在MS SQL Server中,游标允许我们遍历查询结果集,一次处理一行数据,而不是一次性处理所有数据。下面我们将详细讲解游标的概念、类型、使用方法以及优缺点。 1. 游标概念: 游标(Cursor)是一个数据库对象,它...
```sql WHILE @@FETCH_STATUS = 0 BEGIN -- 处理逻辑 -- ... -- 在每次进入内层循环前重新打开内层游标 CLOSE CUR; OPEN CUR; -- 或者在每次执行完内层循环后关闭内层游标 -- CLOSE CUR; END ``` 通过这样的...
6. **游标和循环**:在Delphi中,可能使用For-Loop遍历结果集,而在T-SQL中则使用DECLARE CURSOR和FETCH语句。转换工具需考虑这些差异。 7. **错误处理**:Delphi的Try...Except...Finally与T-SQL的TRY...CATCH块...
它支持SQL Server特有的功能,例如游标、XML数据类型和针对大型对象的流式处理。 在实际应用中,要使用PDO连接SQL Server,你需要完成以下步骤: 1. 安装sqlncli:通常,这可以通过下载并运行sqlncli.msi文件完成...