oracle的游标 sql语句,sql游标

sql游标

游标的类型:

1、静态游标(不检测数据行的变化)

2、动态游标(反映所有数据行的改变)

3、仅向前游标(不支持滚动)

4、键集游标(能反映修改,但不能准确反映插入、删除)

游标使用顺序:

1、定义游标

2、打开游标

3、使用游标

4、关闭游标

5、释放游标

Transact-SQL:

declare 游标名 cursor [LOCAL | GLOBAL][FORWARD_ONLY | SCROLL][STATIC | KEYSET | DYNAMIC ] [READ_ONLY | SCROLL_LOCKS]

for selet语句   [for  update[of 列名[,列名]]

注:LOCAL 局部游标     GLOBAL 全局游标

FORWARD_ONLY 仅向前  SCROLL 滚动

STATIC 静态  KEYSET 键集 DYNAMIC 动态

READ_ONLY 只读 SCROLL_LOCKS 锁定游标当前行

获取游标的数据

FETCH [[NEXT | PRIOR | FIRST | LAST |

ABSOLUTE{ n | @nvar | RELATIVE { n | @nvar}]

from ] 游标名 [into 变量]

注:

NEXT  下一行  PRIOR  上一行  FIRST 第一行

LAST  最后一行  ABSOLUTE n 第n行

RELATIVE n 当前位置开始的第n行

into 变量  把当前行的各字段值赋值给变量

游标状态变量:

@@fetch_status  游标状态

0 成功  -1 失败  -2 丢失

@@cursor_rows 游标中结果集中的行数

n 行数 -1 游标是动态的  0 空集游标

操作游标的当前行:

current of 游标名

以下例子,在SQL SERVER 2000 测试成功

use

pubs

go

declare

@auid

char

(

12

),

@aulname

varchar

(

20

),

@aufname

varchar

(

20

),

@st

char

(

2

),

@auinfo

varchar

(

50

)

declare

auth_cur

cursor

for

select

au_id, au_lname, au_fname, state

from

authors

open

auth_cur

fetc

相关文档:

1.Oracle删除重复记录.

删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录.

delete from people

where peopleId  in (select  peopleId  from people  group  by  peopleId   having  count(peopleId) > 1)

and rowid not i ......

Aaron Bertrand

Adam Machanic

All Things SQL Server

Allen Kinsel - SQL DBA

Allen White

Amit Bansal writes...

Andrew Fryer's Blog

Andrew Kelly

Andy Leonard

Anything and Everything IT

Arcane Code

Arnie Rowland: Ramblings of a Harried Technogeek

B.I. for the SQL Guy

Bart Duncan's SQL Weblog ......

declare @ID varchar(10)

set @ID=9 --根节点

declare @i int --级数

declare @t table(ID varchar(10),ParentID varchar(10),Level int)

set @i = 1

insert into @t select @ID,0,0 --当前级,本级,如果不要的话可以注释掉或再加个参数来选择操作

insert into @t select ID,ParentID,@i from t_ ......

根據前一篇關於自動備份的文章,對應的自動還原方案

create procedure [dbo].[sp_RestoreDatabase]

@SourceDirBackupFiles NVARCHAR(200)

as

declare @DatabaseName sysname

--Table to hold the result from RESTORE HEADERONLY. Needed to get the database name o ......

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL中,游标(Cursor)是一种用于遍历查询结果集的工具,特别在需要逐行处理数据或者进行复杂的迭代操作时很有用。在一些数据库系统(如OracleSQL Server、PostgreSQL等)中,你可以使用游标来实现这样的功能。创建游标的基本步骤如下: 1. **声明游标**:首先,你需要声明一个游标变量,指定你想从哪个表或视图中获取数据。例如,在Oracle中,你可以这样做: ```sql DECLARE cursor_name CURSOR FOR SELECT * FROM table_name; ``` 这里的`cursor_name`是你要给游标起的名字,`table_name`是你想要查询的表。 2. **打开游标**:声明游标后,需要调用`OPEN`语句打开它: ```sql OPEN cursor_name; ``` 3. **循环处理**:通常会有一个循环结构(如PL/SQL的`LOOP`或`FETCH`),以便逐行获取和处理数据: ```sql LOOP FETCH cursor_name INTO row_variable; EXIT WHEN cursor%NOTFOUND; -- 当没有更多数据时退出循环 -- 这里处理每一行(row_variable)的数据 END LOOP; ``` 在循环中,`row_variable`是用来存储当前行数据的占位符,`cursor%NOTFOUND`检查是否还有更多的数据。 4. **关闭游标**:处理完毕后,别忘了关闭游标以释放资源: ```sql CLOSE cursor_name; ``` 5. **清理**:在PL/SQL块中,可能还需要执行`DEALLOCATE`语句来完全释放游标: ```sql DEALLOCATE cursor_name; ``` 请注意,不同的数据库管理系统可能有不同的语法,上述例子基于Oracle SQL。如果你使用的是其他数据库,如SQL Server,请查阅相应的文档。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值