游标的用途不仅仅是读取查询的结果集。您还可以在处理游标时修改数据库中的数据。这些操作通常称为定位插入、更新和删除操作,或者如果操作是插入操作,则称为 PUT 操作。
并非所有的查询结果集都允许定位更新和删除。如果您在不可更新的视图上执行查询,则基础表不会发生更改。此外,如果查询涉及连接,则必须指定您希望从哪一个表删除,或者您希望更新哪些列,何时执行操作。
只有在表中的某些非插入列允许 NULL 或有缺省值的情况下,才能通过游标执行插入。
将多行插入对值敏感的游标(由键集决定的游标)时,新插入的行出现在游标结果集的末尾处。即使这些行与查询的 WHERE 子句不匹配,或者 ORDER BY 子句通常将它们放置在结果集的其它位置,这些行也会出现在最后。此行为与编程接口无关。例如,当使用嵌入式
SQL PUT 语句或 ODBC SQLBulkOperations 函数时就会是这样。通过选择游标中的最后一行,可以找到最新插入行的 AUTOINCREMENT 列的值。例如,在嵌入式 SQL 中,可以使用 [FETCH ABSOLUTE -1 cursor-name
] 来获取该值。此行为的结果是,对值敏感的游标的首次多行插入的开销会很大。
ODBC、JDBC、嵌入式 SQL 和 Open Client 允许使用游标进行数据操作,但 ADO.NET 不允许。对于 Open Client,您可以删除和更新行,但您只能在单表查询上插入行。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |