java中的sql语句

来源:百度知道 编辑:UC知道 时间:2024/06/24 17:14:26
private static final String SQL_ADD_STAFF="insert into tbll_zoo_staff values(lpad(zoostaff_seq.nextval),?,?,?,?,?,?,?)";

在oracle中我建这样的一个表
create table tbl_zoo_staff(
staff_ID char(4),
STAFF_NAME varchar2(20) not null,
STAFF_AGE NUMBER(3) not null,
STAFF_SEX CHAR(1),
STAFF_BIRTH DATE,
STAFF_TYPE CHAR(1) not null,
STAFF_HOBBY VARCHAR2(30),
STAFF_MEMO VARCHAR2(300)
);

请问上头的SQL语句中zoostaff_seq.nextval 这个是什么意思``自动生成ID吗?``

是的,用的是oracle的序列,oracle特有的序列 SEQUENCE 。
在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
1、Create Sequence
你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限,
CREATE SEQUENCE emp_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;

一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL
CURRVAL=返回 sequence的当前值
NEXTVAL=增加sequence的值,然后返回 sequence 值
比如:
emp_sequence.CURRVAL
emp_sequence.NEXTVAL

可以使用sequence的地方:
- 不包含子查询、snapshot、VIEW的 SELECT 语句
- INSERT语句的子查询中
- NSERT语句的VALUES中
- UPDATE 的 SET中

可以看如下例子:
INSERT INTO emp VALUES
(empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);

SELECT empseq.currval FROM DUAL;

但是要注意的是:
- 第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT B