在一个存储过程中如何多次使用同一个序列,

lbd8848 2008-06-25 01:49:16
有序列: a

有语句:
insert into table1 select a.nextval,b,c,d||to_char(a.currval) from table2

出错!
如何在以上语句中多次使用序列a!
...全文
113 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Magina3 2011-12-28
  • 打赏
  • 举报
回复
太聪明了
wffffc 2008-06-25
  • 打赏
  • 举报
回复
再同一个sql里面seq的值不变的,如下所示,希望对你有点用:
SQL> select seq.nextval,seq.currval from dual;

NEXTVAL CURRVAL
---------- ----------
22 22

SQL> select seq.nextval,seq.nextval from dual;

NEXTVAL NEXTVAL
---------- ----------
23 23

SQL>
ehsgs 2008-06-25
  • 打赏
  • 举报
回复
Cause: A reference to database table, view, or sequence was found in an inappropriate context. Such references can appear only in SQL statements or (excluding sequences) in %TYPE and %ROWTYPE declarations. Some valid examples follow: SELECT ename, emp.deptno, dname INTO my_ename, my_deptno, my_dept .FROM emp, dept WHERE emp.deptno = dept.deptno; DECLARE last_name emp.ename%TYPE; dept_rec dept%ROWTYPE;

Action: Remove or relocate the illegal reference.
看这个错误的解释
lbd8848 2008-06-25
  • 打赏
  • 举报
回复
谢谢
1.保存在变量里不行,因为insert into select 要读取多条,而a的序列值不会变.
2.使用currval,在存储过程里提示
Error: PLS-00357: 在此上下文中不允许表,视图或序列引用 'A.CURRVAL'
ehsgs 2008-06-25
  • 打赏
  • 举报
回复
另外我刚试了下

你先取nextval,然后在currval这种写法是正确的啊
ehsgs 2008-06-25
  • 打赏
  • 举报
回复
保存在变量里啊

想用多少次用多少次

17,377

社区成员

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

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