Oracle的系列怎么返回值都是-1?

egrid 2009-12-26 03:48:05
我创建另一个名为ABCD的序列,想用下面的SQL语句取系列的下一个值:
SELECT ABCD.NEXTVAl FROM DUAL

结果每次得到的却是-1

这是怎么回事?
...全文
167 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
egrid 2009-12-26
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 shiyiwan 的回复:]
另,
VB.NET我不懂,但是我猜取值不会是这样的。
[/Quote]

哈哈,一言惊醒梦中人,是我搞错了,应该是ExecuteScalar
shiyiwan 2009-12-26
  • 打赏
  • 举报
回复
另,

VB.NET我不懂,但是我猜取值不会是这样的。
shiyiwan 2009-12-26
  • 打赏
  • 举报
回复
不是这样取值的吧,

cmd.ExecuteNonQuery()应该只能返回执行状态。
egrid 2009-12-26
  • 打赏
  • 举报
回复
我重新做过后,我发现在Oracle是可以取得序列的值。

但是在vb.net中是不行的,得到得值始终是-1

Dim 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
wh62592855 2009-12-26
  • 打赏
  • 举报
回复
你创建那个序列的时候提示你创建成功了吗?

wh62592855 2009-12-26
  • 打赏
  • 举报
回复
SQL> select sequence_owner,sequence_name from dba_sequences
2 where sequence_name='ABCD';

SEQUENCE_OWNER SEQUENCE_NAME
------------------------------ ------------------------------
SCOTT ABCD
wh62592855 2009-12-26
  • 打赏
  • 举报
回复
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
----------
1

SQL> select ABCD.NEXTVAL from dual;

NEXTVAL
----------
2
duqiangcise 2009-12-26
  • 打赏
  • 举报
回复


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;
1

SQL>
shiyiwan 2009-12-26
  • 打赏
  • 举报
回复
你的序列引用错了啊,下面的提示错误已经说明了呀

CREATE SEQUENCE FOXTABLE.ABCD
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
MAXVALUE 100000
NOCYCLE -- 一直累加,不循环
CACHE 20;

不要加双引号,重新建个正常的

或者你可以试试
SELECT "ABCD".NEXTVAl FROM DUAL
看看有没有结果。
duqiangcise 2009-12-26
  • 打赏
  • 举报
回复
CREATE SEQUENCE ABCD INCREMENT BY 1 START WITH 1 
MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE
CACHE 20 NOORDER

这样试试
egrid 2009-12-26
  • 打赏
  • 举报
回复
这是创建的:

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: 序列(号)不存在
wh62592855 2009-12-26
  • 打赏
  • 举报
回复
你创建序列的语句是怎样的
shiyiwan 2009-12-26
  • 打赏
  • 举报
回复
你的序列代码呢?贴出来看看

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧