日期:2014-05-16  浏览次数:20410 次

DB2和Oracle中新建sequence
DB2  sequence 的创建是否带有双引号,引发的一个生产系统问题

create sequence x3;   -- 执行成功
   
create sequence "x3"  -- 执行成功

(实际上创建了一个名称为 "x3" 的sequence,也可以用 X3 来访问)

values Nextval for x3  --执行成功,值为 1

values prevval for X3  --执行成功,值为 1


create sequence Y3;  -- 执行成功,可以用 Y3 和 y3 或者 "Y3" 来访问
   
create sequence "Y3"  -- 执行失败 报已经存在错误

values Nextval for Y3 -- 执行成功,值为 1

values Nextval for y3 -- 执行成,值为 2


create sequence z3;   -- 执行成功
   
create sequence "z3"  -- 执行成功

(实际上创建了一个名称为 "z3" 的 sequence,注意是带引号的)

--values prevval for z3  -- 报错 因为还没有值所以报错

values Nextval for z3  -- 执行成功,值为 1

values Nextval for z3  -- 执行成功,值为 2

values Nextval for "z3"  -- 执行成功,值为 1

---------------------------

ORACLE sequence

create sequence x3;  -- 执行成功
   
create sequence "x3"  -- 执行成功

(说明在 oracle 中 创建 sequence 当引号中有小写字母的时候,带引号和不带引号是不一样的)

--select x3.prevval from dual -- 报错

--select X3.prevval from dual -- 报错

select x3.Nextval from dual  -- 执行成功 值为 1

select x3.Nextval from dual  -- 执行成功 值为 2

select X3.Nextval from dual  -- 执行成功 值为 3 实际上是 x3 这个 sequence

select "x3".nextval from dual  -- 执行成功 值为 1

select "x3".nextval from dual  -- 执行成功 值为 2

-------------------------------

create sequence Y3; -- 执行成功
   
create sequence "Y3" -- 执行失败,报错,提示已经存在,

(说明 oracle 中创建 sequence 如果是大写字母,跟创建带引号的是一样的。)

select Y3.nextval from dual  -- 执行成功 值为 1

select "Y3".nextval from dual  -- 执行成功 值为 2

-------------------------------

create sequence "A" -- ok

select "A".nextval from dual -- ok

select a.nextval from dual -- ok

select A.nextval from dual -- ok

select "A".nextval from dual -- ok

select "a".nextval from dual -- error

-------------------------------

create sequence "b" -- ok

select "b".nextval from dual -- ok

select b.nextval from dual -- error

select B.nextval from dual -- error

select "B".nextval from dual -- error

select "b".nextval from dual -- ok

-------------------------------

create sequence "a"

select a.nextval from dual --error

select A.nextval from dual --error

select "a".nextval from dual -- ok

select "A".nextval from dual -- error

-------------------------------

create sequence "B"

select b.nextval from dual -- ok

select B.nextval from dual -- ok

select "b".nextval from dual -- error

select "B".nextval from dual -- ok

drop sequence B --ok

drop sequence a --error

drop sequence "a" --ok

create sequence "B" -- ok

drop sequence b --ok

create sequence "B" -- ok

drop sequence "b" --error

drop sequence b -- ok

---------------------------