关于cursor的搜集

 引用自http://www.cnblogs.com/asdcer/archive/2006/09/07/497851.aspx

1:声明Cursor
DECLARE  cursor_name CURSOR
[LOCAL | GLOBAL]
[FORWARD_ONLY | SCROLL]
[STATIC | KEYSET | DYNAMIC | FAST_FORWARD]
[READ_ONLY | SCROLL_LOCKS | OPTIMISTIC]
[TYPE_WARNING]
FOR  select_staement
[FOR UPDATE [OF column_name [,...n]]]

(1.)  LOCAL | GLOBAL
默认是GLOBAL
(2.)  FORWARD_ONLY | SCROLL
默认是FORWARD_ONLY,但若指定[ STATIC | KEYSET | DYNAMIC],则默认为  SCROLL
FORWARD_ONLY :只能由前向后地读取下一条记录
(3.)  STATIC | KEYSET | DYNAMIC | FAST_FORWARD
STATIC会用临时数据表来保存Cursor数据
默认为DYNAMIC
(4.)  READ_ONLY | SCROLL_LOCKS | OPTIMISTIC
设置SCROLL_LOCKS选项时,凡是经由Cursor读取到的记录就会被自动Lock
默认值:
如果数据来源不允许修改,默认为READ_ONLY
‚设置为STATIC或FAST_FORWARD的Cursor默认为READ_ONLY
ƒ设置为DYNAMIC或KEYSET的Cursor默认为OPTIMISTIC

一个例子:

1  DECLARE MyCursor CURSOR
2  FOR SELECT TOP  10   *  FROM WG_JS

以上声明了一个全局Cursor,其类型为默认的FORWAR_ONLY、DYNAMIC、及OPTIMISTIC。

2:打开Cursor

1  OPEN  cursor_name

3:关闭Cursor,以解除Cursor与源数据表的连接

1  CLOSE cursor_name

4:删除Cursor,从内存中删除

1  DEALLOCATE cursor_name

5:使用FETCH 读取Cursor中的记录

1  FETCH [[NEXT  |  PRIOR  |  FIRST  |  LAST  |  ABSOLUTE{n  | @nvar  |  RELATIVE{n  |  @nvar}}]
2  FROM ]
3  cursor_name
4  [INTO @variable_name[,n]]

6:Cursor的使用技巧
(1).GLOBAL Cursor 与 LOCAL Cursor 的命名空间
GLOBAL Cursor与LOCAL Cursor 是使用不同的命名空间,因此可以声明相同的Cursor名称。当有相同的Cursor时,在使用Cursor时会以 LOCAL Cursor 优先,此时若要存取GLOBAL Cursor,则必须加上GLOBAL Cursor关键词。建议多使用LOCAL Cursor。
(2).取得Cursor 相关信息
@@FETCH_STATUS 全局变量
@@ FETCH_STATUS 可判断最近一次FETCH操作是否成功,返回值意义如下:

返回值意义
0FETCH成功
-1FETCH失败
-2要FETCH的记录不存在

② @@ CURSOR_ROWS全局变量
@@ CURSOR_ROWS 可查询最近一次OPEN的Cursor中有多少条记录。不过对于返回数据量较大的STATIC 或KEYSET Cursor 来说,SQL Server为了提升效率只会先返回部分内容,此时@@CURSOR_ROWS的值为目前已存入Cursor 中的记录条数,并以负值表示(条数乘以-1)。
返回值意义
-1表示OPEN的Cursor为DYNAMIC,由于是动态存取,因此无法确定条数
-n小于-1的值代表查询数据尚未全部寸入Cursor中,而n则为目前已存入Cursor中的数据条数
0表示OPEN失败或没有查到任何一条记录
n数据已完全存入Cursor中,返回值为目前的数据条数

③ CURSOR_STATUS 函数
在参数中必须先指明Cursor的种类(LOCAL、GLOBAL或VARIABLE),然后再指定的Cursor的名称或变量名称。函数返回值为一个smallint,其意义如下:
返回值意义
1Cursor已OPEN,其内可能有0、1或多条数据
0Cursor已OPEN,但已确定其内没有查到任何一条数据。(DYNAMIC Cursor 不会返回次值,因其内容是动态更新的)
-1Cursor已CLOSE
-2Cursor变量未参照到实际Cursor,或参照的Cursor已被DEALLOCATE
-3指定的Cursor名称或变量不存在

 

 

### 关于Cursor的实际应用案例 Cursor 是一款强大的开发工具,旨在提高开发者编写代码的效率和质量。相较于其他同类工具,Cursor 提供了更为全面的功能集[^1]。 #### 应用场景一:基于文件上下文的智能提示 当处理大型项目时,理解不同部分之间的关系至关重要。Cursor 的 `@Files` 功能允许传递特定代码文件的上下文信息给 AI 辅助系统,从而使得生成的建议更加贴合实际需求。 ```python # 使用 @Files 注解提供文件上下文 @Files("path/to/your/file.py") def some_function(): pass # 这里可以得到更精准的帮助和支持 ``` #### 应用场景二:简化 Web 开发中的模板渲染 在构建动态网站的过程中,HTML 模板常常需要嵌入变量或者逻辑控制语句。利用 Cursor 可以轻松实现这一点,如下所示: ```html <li><a href="{{ url_for('about') }}">关于我</a></li> ``` 这段 HTML 片段展示了如何在一个导航列表项中创建指向“关于我们”的超链接[^2]。 #### 应用场景三:增强自动化测试脚本编写体验 对于涉及大量重复操作的任务来说,如网页抓取或 UI 测试,借助 Selenium 和类似的库能够大大减轻工作量。而 Cursor 则进一步优化了这一过程,使开发者能更快捷地完成任务设置与调试[^4]。 ```python from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get('http://example.com') images = driver.find_elements(By.TAG_NAME, 'img') image_urls = [img.get_attribute('src') for img in images] with open('image_links.csv', mode='w', newline='') as file: writer = csv.writer(file) for link in image_urls: writer.writerow([link]) ``` 上述 Python 脚本演示了怎样运用 Selenium 技术配合 CSV 文件保存从网页上收集到的所有图像资源链接。 通过以上实例可以看出,在日常编程活动中合理运用 Cursor 工具不仅有助于加速开发进度,还能促进良好编码习惯养成,进而产出高质量软件产品[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值