O2SS0221:不支持调用标识序列 NEXTVAL (错误)
本文介绍了SQL Server 迁移助手 (SSMA) for Oracle 不转换引用序列函数的过程的NEXTVAL
一些原因。
背景
是 SEQUENCE
Oracle 中的独立数据库对象,它通常自动为主键/外值创建唯一整数。 NEXTVAL
用于访问指定序列的下一个值。
转换SEQUENCE
对象时,SSMA 可以使用两种技术,即“序列到序列”和“序列到标识”。 转换为序列时,SSMA 将在每个 Oracle 序列的SQL Server架构中创建相应的SEQUENCE
对象。 在“顺序到标识”模式下,SSMA 不会在 SQL Server中创建任何SEQUENCE
对象,因此对 Oracle 序列调用 NEXTVAL
将导致错误消息。
示例
请考虑以下示例:
CREATE OR REPLACE PROCEDURE proc1
AS
t1 NUMBER;
BEGIN
SELECT customers_seq.NEXTVAL INTO t1 FROM DUAL;
END;
此处有一个存储过程,该存储过程尝试检索序列 customers_seq
的下一个值。 如果在 SSMA 中使用 “序列到标识” 模式,则会生成以下错误消息:
O2SS0221:不支持调用标识序列 NEXTVAL
可能的补救措施
若要解决此错误,可以重写 PL/SQL 代码以消除对 NEXTVAL
SSMA 项目设置的访问,或更改 SSMA 项目设置以在SQL Server而不是标识列中生成SEQUENCE
对象。 若要执行后续操作,请执行以下操作:
- 单击“ 工具” 菜单,然后选择“ 项目设置”。
- 然后,单击“ 常规 ”选项卡。
- 现在,在“序列转换组”下,将“转换序列生成器”设置为“使用SQL Server序列生成器”。
- 应用这些设置,然后单击“ 确定”。
相关转换消息
- O2SS0188:在源元数据中找不到序列
- O2SS0214:列具有绑定序列,但在源元数据中找不到序列
- O2SS0217:不支持调用标识序列 CURRVAL
反馈
提交和查看相关反馈