【发布时间】:2014-02-16 12:35:13
【问题描述】:
我得到了 table1,其中包含 1 - 100 范围内的序列号 我想在不创建新表的情况下使用 pl 找出丢失的数字
我尝试过这种方式,但绝对不是专业的方式,而且 我试着用 选择 min_val.nextval 关键字,但我失败了,所以任何简单而专业的方法都可以做到这一点
declare
min_val number(4);
max_val number(4);
current_val number(4);
cursor ids_cur is
select ids from test1;
begin
for ids_rec in ids_cur
loop
if min_val is not null then
min_val:=min_val+1;
DBMS_OUTPUT.PUT_LINE(min_val);
else
DBMS_OUTPUT.PUT_LINE(min_val);
end if;
end loop;
end;
【问题讨论】:
-
我阅读了 b4 帖子我正在寻找更优化的方式,我不想为我的序列创建表
-
针对什么进行了优化?最快的速度方式是预先创建的表格,对于仅有 100 个值而没有明显计划更改范围的情况,其他方面的最佳解决方案,即最简单。
-
大约有 200 万条记录我不想创建一个包含 200 万条 IDS 记录列表的表只是为了检查序号,它们分为 36 种类型,我使用正则表达式将它们分隔开来,并为那里的每种类型是捕获该序列号的不同方法,并且每种类型都有它自己的限制,例如 type1 的序列号限制在 1 到 9999 之间,所以我认为还有另一种方法可以做到这一点
-
你说 0, 100,我是程序员,而不是千里眼……带有序列定义的表会给你一个机会在非递归 CTE 中创建一个范围,然后做一个外部加入其中 id 为空操作
-
那是我朋友的例子
标签: oracle