Oracle SQL:使用* implicit *游标更新记录属性

时间:2015-09-13 18:18:11

标签: sql oracle cursor sql-update

我的程序的一部分为表qgame_history创建一个新记录。该表有一个id和一个结果字段。最新记录的结果为空。 我想使用隐式游标将其更改为1之类的数字。 id的数据类型为NUMBER(5,0),结果的数据类型为NUMBER(1,0)。我使用了以下代码,没有错误,但没有变化。有什么理由吗?

因为null将在最后一条记录中,所以它将在id最高的记录中,因此是max(history_id)。

set serveroutput on


DECLARE
cnumber qgame_history.history_id%TYPE;

CURSOR c1
   IS
     SELECT history_id INTO cnumber
     FROM qgame_history
     WHERE history_id = (SELECT MAX(history_id)
                        FROM
                        qgame_history);

BEGIN

      UPDATE qgame_history
        SET result = 1
        WHERE history_id = cnumber;

      COMMIT;
END;
/

我想使用我项目的这一部分来演示使用隐式游标。

1 个答案:

答案 0 :(得分:1)

不需要光标,您可以在单个查询中执行此操作,例如

  UPDATE qgame_history
    SET result = 1
    WHERE history_id = (SELECT MAX(history_id) FROM qgame_history);