如何在 pl/sql 中选择更新时使用 SYS_REFCURSUR

埃米尔

我想选择多行并更新所有选定的行。所以这个目标我写了这个查询。但是在执行时抛出异常。

我在像波纹管这样的生产者中写了这个查询。

PROCEDURE get_rows(
   a_cursor OUT SYS_REFCURSOR,
   a_id IN VARCHAR,
   a_count IN NUMBER); 

异常详情:

java.sql.SQLException: ORA-01002: 获取顺序错误

a_cursor 是 SYS_REFCURSOR

OPEN a_cursor FOR
  SELECT mytable.VID
  FROM   mytable
  WHERE  ROWNUM <= COUNT FOR UPDATE;

loop 
  FETCH a_cursor INTO a_id;
  if a_cursor %notfound then
    cnumber := 9999;
  else
    UPDATE mytable SET
    ...
    WHERE  VID = a_vid;
    COMMIT;
  end if;
end loop;
XING

sys_refcursor不能在update语句中使用A。您可以使用显式游标,如下所示。使用这种方式:

    DECLARE
    cursor a_cursor is
      SELECT mytable.VID
      FROM   mytable
      WHERE  ROWNUM <= COUNT FOR UPDATE;

    a_id number;
    begin
    OPEN a_cursor;
    loop     
      FETCH a_cursor INTO a_id;          
      exit when a_cursor%notfound; 

        UPDATE mytable SET
        ...
        WHERE  VID = a_vid;                   
    end loop;
    COMMIT;
   close a_cursor;
 end;

编辑:

create or replace PROCEDURE get_rows(
                                   a_cursor OUT SYS_REFCURSOR,
                                   a_id IN VARCHAR,
                                   a_count IN NUMBER)
IS                                   
cursor a_cur is
  SELECT mytable.VID
  FROM   mytable
  WHERE  ROWNUM <= a_COUNT ;

a_id NUMBER;
cnumber number;
BEGIN 
OPEN a_cur;

 LOOP
  FETCH a_cur INTO a_id; 

  IF a_cur%notfound THEN
   cnumber := 9999;
  End if;

  exit when a_cursor%notfound; 

    UPDATE mytable SET
     ...
    WHERE  VID = a_vid;
  END loop;
  COMMIT;    
  CLOSE a_cur;

  Open a_cursor for select * from mytable;

end ;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在shell脚本中使用oracle $$ PLSQL_LINE?

来自分类Dev

如何在 sql 查询中使用 plsql 表类型?

来自分类Dev

如何使用sql / plsql获取模式的用户

来自分类Dev

如何使用更新在wordpress中选择metabox?

来自分类Dev

如何在不安装oracle的情况下使用plsql循环

来自分类Dev

如何在php中使用来自plsql的参数调用函数?

来自分类Dev

如何在PLSQL中释放游标?

来自分类Dev

如何在Oracle PLSQL中透视表?

来自分类Dev

如何在PLSQL中过滤json?

来自分类Dev

如何选择与PLSQL中的值匹配的子XML?

来自分类Dev

如何还原旧的plsql?

来自分类Dev

选择存储的proc plsql

来自分类Dev

在plsql中编译时,如何避免Σ变成S?

来自分类Dev

在plsql中使用for循环更新

来自分类Dev

如何使用plsql在不同列的CSV中显示数据?

来自分类Dev

如何使用plsql或sql合并“-”记录与“ non--”记录?

来自分类Dev

我如何使用 plsql 转换 'a','b','c' 中的 'a,b,c'

来自分类Dev

游标plsql使用select

来自分类Dev

使用 VARRAY 中的值更新时的 PLSQL 问题

来自分类Dev

使用where&select子句时,如何在滑轨中选择图像列

来自分类Dev

当使用 tensorflow API 检测到该对象时如何在图像中选择 ROI

来自分类Dev

plsql-Oracle选择集合

来自分类Dev

如何在plsql中以json格式发送POST请求

来自分类Dev

如何在plsql中为匿名块或查询设置超时?

来自分类Dev

如何在plsql中删除重复的地址行

来自分类Dev

如何在PLSQL中的变量中存储多行

来自分类Dev

如何在Spring MVC中调用PLSQL(Oracle)包?

来自分类Dev

如何在plsql中为匿名块或查询设置超时?

来自分类Dev

如何在Oracle PLSQL中验证XML文件

Related 相关文章

热门标签

归档