【发布时间】:2011-07-31 10:28:33
【问题描述】:
首先,我在 perl 脚本中的 oracle 中创建了一个序列。我收到一个错误,指出序列已创建错误。有没有办法重置序列(创建或替换不起作用)
create or replace sequence test_seq start with 1900 increment by 1 nomaxvalue
sprintf("INSERT INTO Custodian_New (Loginid,Type, Id, User, TimeCreated, RcNumber) values ('%s',1, %d, '%s', %d, '%s')", seq_name.nextVal,$dd, $Name, time(), $rc_num);
perl 脚本中的上述语句为序列打印:'test_seqnextVal'。 所以报错
DBD::Oracle::db do failed: ORA-01722: invalid number (DBD ERROR: error possibly near <*>seq_name )occurs.
请就问题所在提出建议?谢谢。
【问题讨论】:
-
我认为您将不得不删除并再次创建序列,替换将不起作用
-
为什么要重置序列?
-
seq_name.nextval也应该用双引号吗?您不希望在%s周围加上单引号,它会尝试插入字符串“seq_name.nextVal”而不是会生成的数字。
标签: perl oracle programming-languages ora-01722