您的位置:首页 > 产品设计 > UI/UE

ORA-02287:此处不允许序号(sequence number not allowed here) 的避免以及强制实现

2016-02-24 23:21 786 查看
白天在过程包中使用序列产生的一个错误,记录一下

在select语句中直接使用序列来产生主键id,但是oracle提示此处不允许使用序列。

select SEQ_B_LOG_ID.NEXTVAL id , name from dual

解决方法,使用函数取序列值

create or replace function get_seq_next (seq_name in varchar2) return number
is
seq_val number ;
begin
execute immediate 'select '|| seq_name|| '.nextval from dual' into seq_val ;
return seq_val ;
end get_seq_next;

在存储过程中调用取序列函数来替代直接取序列的方法即可。

FUNCTION GET_SEQ_NEXT
RETURN NUMBER IS
  SEQ_VAL NUMBER;
BEGIN
  EXECUTE
IMMEDIATE 'select GAS_CA.SEQ_A_RCVBL_GAS_FLOW_ID.NEXTVAL@TO_SJQYXLKfrom dual'
    INTO SEQ_VAL;
  RETURN SEQ_VAL;
END GET_SEQ_NEXT;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: