是否可以基于nextval序列创建视图?
我创建了一个这样的视图:
create view seq_agents_nextval
as
select seq_agents.nextval from dual;从Oracle文档中我读到它不是这样工作的。有没有其他技巧或技巧可以用来创建这样的输出视图?
发布于 2012-01-26 08:15:57
您最好的选择将是遵循以下代码精神的udf:
CREATE OR REPLACE FUNCTION my_nv RETURN INTEGER AS
l_rv NUMBER;
BEGIN
SELECT seq_agents.nextval
INTO l_rv
FROM DUAL
;
RETURN l_rv;
END;
CREATE OR REPLACE VIEW seq_agents_nextval AS
SELECT my_nv
FROM DUAL
;否则,您可能会查询系统视图以获得至少一个近似答案
CREATE OR REPLACE VIEW seq_agents_nextval AS
SELECT last_number + increment_by nv
FROM ALL_SEQUENCES
WHERE sequence_owner = '<the_proper_schema_name>'
AND sequence_name = 'SEQ_AGENTS'
;但是这个值的用处是有限的,因为它可能比实际值大得多,与序列的缓存值乘以序列增量一样多,并且没有考虑最大值和进位行为(后两个方面是可以修复的)。
请记住,在查询视图和使用返回值之间,可能会发出任意数量的新序列值。
希望这能有所帮助&致敬
https://stackoverflow.com/questions/8454582
复制相似问题