存储过程Oracle SQL用于处理大型查询

时间:2016-09-27 07:42:02

标签: sql oracle plsql

我正在尝试实现一个更新我的表的存储过程(超过10k行) 但只有一定数量的行rownum

现行程序:

       create or replace PROCEDURE P_UPDATETOANON AS 
BEGIN
         UPDATE PERSONENVERKEHR_VERTRIEBSSYS15.HIST_TEST
         SET TS_RESPONSIBLE = 'test'  
         WHERE TS_RESPONSIBLE != 'test' 
         AND length(TS_RESPONSIBLE) >  3;

END P_UPDATETOANON;

Error(3,10): PL/SQL: SQL Statement ignored
Error(3,48): PL/SQL: ORA-01031: insufficient privileges

如何实现仅更新某个数据记录?

1 个答案:

答案 0 :(得分:1)

如果您只需要更新给定数量的行,而没有任何逻辑来决定哪些行,您可能只需要:

UPDATE PERSONENVERKEHR_VERTRIEBSSYS15.HIST_TEST
  SET TS_RESPONSIBLE = 'test'  
WHERE TS_RESPONSIBLE  != 'test'
  AND length(TS_RESPONSIBLE) > 3
  AND rownum < 100 /* for example */

甚至您的用户似乎无权更新表格;你首先需要

grant update on PERSONENVERKEHR_VERTRIEBSSYS15.HIST_TEST to MQCDBA

由表的所有者或其他授权用户提供。