前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL命令 WHERE CURRENT OF

SQL命令 WHERE CURRENT OF

作者头像
用户7741497
发布2022-05-07 17:07:41
5850
发布2022-05-07 17:07:41
举报
文章被收录于专栏:hml_知识记录hml_知识记录

使用游标指定当前行的UPDATE/DELETE子句。

大纲

代码语言:javascript
复制
WHERE CURRENT OF cursor

参数

  • cursor - 指定在光标的当前位置执行操作,光标是指向表的光标。

描述

WHERE CURRENT OF子句可用于基于游标的嵌入式SQL UPDATEDELETE语句,以指定位于要更新或删除记录上的游标。 例如:

代码语言:javascript
复制
   &sql(DELETE FROM Sample.Employees WHERE CURRENT OF EmployeeCursor)

删除最后一个FETCH命令从“EmployeeCursor”游标获得的行。

嵌入式SQL UPDATEDELETE可以使用WHERE子句(不带游标)或WHERE CURRENT OF(带声明游标),但不能同时使用两者。 如果指定的UPDATEDELETE既不带WHERE也不带WHERE CURRENT OF,则会更新或删除表中的所有记录。

更新的限制

当使用WHERE CURRENT OF子句时,不能使用当前字段值更新字段以生成更新的值。 例如,SET Salary=Salary+100SET Name=UPPER(Name)。 尝试这样做会导致SQLCODE -69错误:SET <field> = <value expression> not allowed with WHERE CURRENT OF <cursor>

示例

下面的嵌入式SQL示例显示了使用WHERE CURRENT OFUPDATE操作:

代码语言:javascript
复制
ClassMethod WhereCurrentOf()
{
    n %ROWCOUNT,%ROWID
    &sql(
        DECLARE WPCursor CURSOR FOR 
            SELECT Lang FROM SQLUser.WordPairs
            WHERE Lang='Sp'
    )
    &sql(OPEN WPCursor)
    q:(SQLCODE '= 0)
    for { 
        &sql(FETCH WPCursor)
        q:SQLCODE 
        &sql(
            UPDATE SQLUser.WordPairs SET Lang='Es'
            WHERE CURRENT OF WPCursor
        )
        if SQLCODE = 0 {
            w !,"Update succeeded"
            w !,"Row count=",%ROWCOUNT," RowID=",%ROWID 
        } else {
            w !,"Update failed, SQLCODE=",SQLCODE 
        }
    }
    &sql(CLOSE WPCursor)
}

下面的嵌入式SQL示例显示了使用WHERE CURRENT OFDELETE操作:

代码语言:javascript
复制
ClassMethod WhereCurrentOf1()
{
    n %ROWCOUNT,%ROWID
    &sql(
        DECLARE WPCursor CURSOR FOR 
        SELECT Lang FROM SQLUser.WordPairs
        WHERE Lang='En'
    )
    &sql(OPEN WPCursor)
    q:(SQLCODE'=0)
    for { 
        &sql(FETCH WPCursor)
        q:SQLCODE 
        &sql(
            DELETE FROM SQLUser.WordPairs
            WHERE CURRENT OF WPCursor
        )
        if SQLCODE=0 {
            w !,"Delete succeeded"
            w !,"Row count=",%ROWCOUNT," RowID=",%ROWID 
        } else {
            w !,"Delete failed, SQLCODE=",SQLCODE 
        }
    }
    &sql(CLOSE WPCursor)
}

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大纲
    • 参数
    • 描述
      • 更新的限制
      • 示例
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档