这是创建的:CREATE SEQUENCE "FOXTABLE"."ABCD" INCREMENT BY 1 START WITH 1 MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE CACHE 20 NOORDER这是取值的: SELECT ABCD.NEXTVAl FROM DUAL提示错误:ORA-02289: 序列(号)不存在
CREATE SEQUENCE ABCD INCREMENT BY 1 START WITH 1 MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE CACHE 20 NOORDER 这样试试
你的序列引用错了啊,下面的提示错误已经说明了呀CREATE SEQUENCE FOXTABLE.ABCD INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 MAXVALUE 100000 NOCYCLE -- 一直累加,不循环 CACHE 20; 不要加双引号,重新建个正常的或者你可以试试 SELECT "ABCD".NEXTVAl FROM DUAL 看看有没有结果。
SQL> create sequence abcd_seq increment by 1 2 start with 1 3 maxvalue 1.0E28 minvalue 1 nocycle 4 cache 20 noorder;序列已创建。SQL> select abcd_seq.nextval from dual; 1SQL>
SQL> CREATE SEQUENCE "SCOTT"."ABCD" INCREMENT BY 1 START WITH 1 2 MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE 3 CACHE 20 NOORDER;Sequence created.SQL> select ABCD.NEXTVAL from dual; NEXTVAL ---------- 1SQL> select ABCD.NEXTVAL from dual; NEXTVAL ---------- 2
SQL> select sequence_owner,sequence_name from dba_sequences 2 where sequence_name='ABCD';SEQUENCE_OWNER SEQUENCE_NAME ------------------------------ ------------------------------ SCOTT ABCD
我重新做过后,我发现在Oracle是可以取得序列的值。但是在vb.net中是不行的,得到得值始终是-1Dim conn As New Data.Oledb.OledbConnection("Provider=MSDAORA.1;Password=he710049;User ID=foxtable;Data Source=fox3;Persist Security Info=True") Dim cmd As New Data.Oledb.OledbCommand("SELECT ABCD.NEXTVAl FROM DUAL",conn) conn.Open Messagebox.show(cmd.ExecuteNonQuery() ) conn.Close
MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE
CACHE 20 NOORDER这是取值的:
SELECT ABCD.NEXTVAl FROM DUAL提示错误:ORA-02289: 序列(号)不存在
MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE
CACHE 20 NOORDER
这样试试
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
MAXVALUE 100000
NOCYCLE -- 一直累加,不循环
CACHE 20; 不要加双引号,重新建个正常的或者你可以试试
SELECT "ABCD".NEXTVAl FROM DUAL
看看有没有结果。
2 start with 1
3 maxvalue 1.0E28 minvalue 1 nocycle
4 cache 20 noorder;序列已创建。SQL> select abcd_seq.nextval from dual;
1SQL>
2 MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE
3 CACHE 20 NOORDER;Sequence created.SQL> select ABCD.NEXTVAL from dual; NEXTVAL
----------
1SQL> select ABCD.NEXTVAL from dual; NEXTVAL
----------
2
2 where sequence_name='ABCD';SEQUENCE_OWNER SEQUENCE_NAME
------------------------------ ------------------------------
SCOTT ABCD
Dim cmd As New Data.Oledb.OledbCommand("SELECT ABCD.NEXTVAl FROM DUAL",conn)
conn.Open
Messagebox.show(cmd.ExecuteNonQuery() )
conn.Close
哈哈,一言惊醒梦中人,是我搞错了,应该是ExecuteScalar