dual : 是oracle的虚拟表,不是真实存在的.
SEQ_YX : 这个是开发人员自己起的一个"序列"的名字,序列一般用于生成id号.
SEQ_YX.nextval 就是取序列的下一个值
举个例子来说
序列当前的值是100,执行一下上面的语句就会取到101,再执行一下就会取到102,一直累加下去
在创建sql语句中也加上了创建序列的语句:
declare
ssql varchar2(4000);
tCount number(2);
iCount number(2);
sCount number(2);
begin
tCount := 0;
select count(*) into tCount from user_all_tables t where upper(t.table_name) = upper('ppos_notice_relateinfo');
if tCount = 0 then
ssql := 'create table ppos_notice_relateinfo
(
ID integer NOT NULL ,
USER_ID varchar2(64) NOT NULL ,
NOTICE_ID varchar2(64) NOT NULL ,
ISREAD_FLAG varchar2(1) NOT NULL ,
creator varchar2(16),
creater_time TIMESTAMP ,
operator varchar2(16) ,
operate_time TIMESTAMP,
constraint PK_ppos_notice_relateinfo primary key (id) using index tablespace HS_SYSTEM_IDX ) tablespace HS_SYSTEM_DATA';
execute immediate ssql;
end if;
select count(1) into iCount from user_indexes t where t.index_name= upper('uk_ppos_notice_relateinfo_idxl');
if sCount = 0 then
execute immediate 'create unique index uk_ppos_notice_relateinfo_idxl on ppos_notice_relateinfo (NOTICE_ID,USER_ID) tablespace HS_SYSTEM_IDX';
end if;
select count(*) into sCount from user_sequences us where us.sequence_name = upper('SEQ_ppos_notice_relateinfo');
if sCount = 0 then
execute immediate 'create sequence SEQ_ppos_notice_relateinfo minvalue 1 maxvalue 999999999 start with 1 increment by 1';
end if;
end;
/
浙公网安备 33010602011771号