0 0

ORA-01410: 无效的 ROWID 如何解决0

 

 

create global temporary table t(
  names varchar2(50)
) on commit delete rows;

begin

  begin
    insert into t values('ALTERATIONINFO_ASQ');
    insert into t values('AUDITING_ASQ');
  end;

  --创建表空间序列
  begin
    for cur in (select names from t)
    loop
      execute immediate 'create sequence "EMAN"."'||cur.names||'" MINVALUE 0 MAXVALUE 99999999 INCREMENT BY 1 START WITH 20 CACHE 20 NOORDER NOCYCLE';
    end loop;
  end;
  
end;

 

执行后的错误:

ORA-01410: 无效的 ROWID ORA-06512: 在 line 2 01410. 00000 - "invalid ROWID" *Cause: *Action:

 

如果只是插入一行数据,却是成功的,现在是我需要插入300多个的序列。在网上查了很久资料,还是不清楚是什么原因造成的,我只是刚接触oracle二周,望大牛们帮帮我。


问题补充:在pl/sql 中执行,只能创建100个序列,然后就报:
ORA-01410: 无效的 ROWID ORA-06512: 在 line 2 01410. 00000 - "invalid ROWID" *Cause: *Action:
错误,我目前只能执行多个,每次100条。实在不清楚为什么会这样子。
2012年6月27日 10:19

5个答案 按时间排序 按投票排序

0 0

 execute immediate 'create sequence '||cur.names||' MINVALUE 0 MAXVALUE 99999999 INCREMENT BY 1 START WITH 20 CACHE 20 NOORDER NOCYCLE';

再试试吧哥,我也试了很多很多很多遍了
开始弄出来了个小写名字的sequence,删除都删不了。。。

2012年6月27日 16:46
0 0

是因为你定义的表字段中是varchar类型,让其自增是有问题。你对表在添加一个number类型的字段,让游标循环给这个字段。试试是否可以!还有游标完了要committ。

2012年6月27日 13:30
0 0

 execute immediate 'create sequence '||'EMAN'||'."'||cur.names||'" MINVALUE 0 MAXVALUE 99999999 INCREMENT BY 1 START WITH 20 CACHE 20 NOORDER NOCYCLE';

2012年6月27日 11:18
0 0

在insert语句之后加上commit提交:

begin

  begin
    insert into t values ('ALTERATIONINFO_ASQ');
    insert into t values ('AUDITING_ASQ');
    commit;
  end;

  --创建表空间序列   
  begin
    for cur in (select names from t) loop
      execute immediate 'create sequence "EMAN"."' || cur.names ||
                        '" MINVALUE 0 MAXVALUE 99999999 INCREMENT BY 1 START WITH 20 CACHE 20 NOORDER NOCYCLE';
    end loop;
  end;

end;

2012年6月27日 10:49
0 0

create global temporary table t(
  names varchar2(50)
) on commit delete rows;
declare
 cursor c is
    select * from t;
  r c%rowtype;

begin

  begin
    insert into t values('ALTERATIONINFO_ASQ');
    insert into t values('AUDITING_ASQ');
  end;

  --创建表空间序列

  begin
  open c; 
  loop
    fetch c
      into r;
    exit when c%notfound;
  execute immediate 'create sequence "EMAN"."'||cur.names||'" MINVALUE 0 MAXVALUE 99999999 INCREMENT BY 1 START WITH 20 CACHE 20 NOORDER NOCYCLE';  
    
  end loop;

  close c;
  commit;
  
end;

2012年6月27日 10:41

相关推荐

    oracle 错误码

    下面将详细介绍从ORA-02001至ORA-02107之间的常见错误码及其含义,帮助读者更好地理解和解决在实际操作中可能遇到的问题。 #### ORA-02001:ûSYSб - **含义**: 表示当前用户没有足够的权限执行某些操作。 - **解决...

    Oracle常用异常代码

    SYS_INVALID_ROWID (ORA-01410) **异常描述:** 当尝试将一个无效的ROWID转换为有效的ROWID时触发此异常。 **解决方法:** - 确认ROWID的格式是否正确。 - 验证ROWID是否对应于表中的有效行。 #### 21. TIMEOUT_...

    oracle 错误码大全

    - **解决方案**:解决资源冲突。 #### ORA-02069: ˲global_namesΪTRUE - **描述**:global_names参数不是TRUE。 - **解决方案**:设置global_names为TRUE。 #### ORA-02070: ݿⲻִ֧е - **描述**:数据库不...

    预定义异常

    16. **SYS_INVALID_ROWID (ORA-01410)** - 描述:字符到ROWID的转换失败,因为字符不代表有效的ROWID。 - 举例:尝试将无效的ROWID字符串转换为ROWID。 17. **TIMEOUT_ON_RESOURCE (ORA-00051)** - 描述:等待...

    ora_error大全.doc

    35. **ORA-12051**: ONCOMMIT选项在物化视图的定义中无效。 36. **ORA-12052**: 更新物化视图时出现问题,可能是由于并发更新或数据一致性问题。 37. **ORA-12053**: 描述了一个特定的错误,可能涉及到事务处理或...

    oracle异常处理

    20. `Sys_invalid_rowid` (ora-01410):无效字符串尝试转换为 ROWID 类型。 21. `Timeout_on_resource` (ora-00051):等待资源超时。 处理预定义异常通常在异常处理部分使用 WHEN 关键字来匹配异常名称,例如: ```...

    Oracle21个预定义异常

    - **错误代码**:ORA-01410 - **场景示例**:在尝试将非法字符串转换为ROWID格式时,将引发此异常。 #### 18. TIMEOUT_ON_RESOURCE - **异常描述**:等待资源时超时触发。 - **错误代码**:ORA-00051 - **场景示例*...

    Oracle 常用预定义异常

    20. **SYS_INVALID_ROWID (ORA-01410)** - **描述**:当尝试将无效字符串转换为ROWID类型时触发。 - **示例场景**:例如,如果你尝试将一个不是ROWID格式的字符串转换为ROWID类型,就会引发此异常。 21. **TIME...

    PLSQL教程.doc

    - **INVALID_CURSOR** (ORA-1001) - 尝试使用无效的游标。 - **INVALID_NUMBER** (ORA-1722) - 对非数字值进行数字运算。 - **LOGIN_DENIED** (ORA-1017) - 无效的用户名或密码。 - **NO_DATA_FOUND** (ORA-1403) - ...

    oracle与sql_server数据类型对应关系.doc

    1. **表名含有空格**:若表名包含空格,则复制过程会因为Oracle错误ORA-00903:无效的表名称,而导致复制失败。 2. **DATE数据类型限制**:SQL Server的datetime类型与Oracle的DATE类型在日期范围上有所不同,...

    oracle优化策略

    - **通过ROWID访问**: ROWID包含了表中记录的物理位置,使用索引可以快速定位ROWID,提高查询效率。建立和使用索引是优化的重要手段。 3. **共享SQL语句**: - ORACLE的共享池保存已解析的SQL语句,避免重复解析...

    CSDN Oracle 版精华帖荟萃

    2. ORA-00904标识符无效:这通常是Oracle数据库中出现的一种错误,表明在语句中使用了一个无效的标识符,比如错误的列名、表名或对象名。解决这类问题通常需要核对数据库对象的名称是否正确,并确保SQL语句符合...

    CSDN+Oracle版精华帖荟萃

    2. ORA-00904标识符无效:这是Oracle数据库中的一个常见错误,当SQL语句中使用了无效的标识符时,会引发此错误。解决这个问题通常需要检查SQL语句中的对象名(如表名、列名)是否拼写正确,以及是否在正确的模式...

    ORACLE DBA面试题集

    这是因为在字段`a`上创建索引时,索引只存储了该字段的值及其对应的ROWID,而不会复制整个表的数据。 #### 15. 9i的DataGuard模式及其区别: **知识点解析:** - **物理备库**:与主库完全相同的数据副本。 - **...

    oracle基础练习

    19. **获取行的物理地址**: `SELECT ROWID, ename FROM tablename WHERE deptno = 20`返回行的ROWID,这是Oracle中行的唯一物理标识。 20. **转换秒为时分秒格式**: 提供的PL/SQL代码演示了如何将秒数转换为小时、...

    ORACLE9i_优化设计与系统调整

    §12.1.2 调整或使触发器无效 137 §12.1.3 重组数据 137 §12.2 优化目标 137 §12.2.1 优化序列SQL语句 137 §12.2.2 优化并行执行 138 §12.2.3 调整OLTP应用 138 §12.3 实际优化例子 139 §12.3.1 避免基于规则...

Global site tag (gtag.js) - Google Analytics