如果我想在WHERE子句中使用序列号,该怎么办?
在这里,我想使用WHERE子句中序列所指定的最后一个值
CREATE SEQUENCE my_no_s
INCREMENT BY 5
START WITH 100;
INSERT INTO myTable VALUES (
my_no_s.NEXTVAL,
TO_DATE('2023/10/03', 'yyyy/mm/dd')
3
);
INSERT INTO myTable (m_no, m_datetime, m_roomno)
SELECT my_no_s.NEXTVAL,
my_datetime + 10,
my_roomno
FROM myTable
WHERE my_no = my_no_s.CURRVAL - 5;
2条答案
按热度按时间stszievb1#
你尝试了,但失败了--这是意料之中的,因为序列使用上有某些限制。看一下文档,
序列值限制
不能在以下构造中使用CURRVAL和NEXTVAL:
(...)
SELECT语句的WHERE子句
你已经得到了一个答案(匿名PL/SQL块)。另一个可能是你自己的函数,它返回那个值。
样品表和序列:
初始行:
功能说明:
这是你的第二次尝试(失败了),但是现在-在第4行-它调用了一个函数。我还修改了你使用的常量(
0
而不是5
),因为该表中没有更多的行,所以where
将导致此时插入0行):bprjcwpo2#
您可以使用匿名PL/SQL块
PS:你必须在选择列表中编辑你的列名。
例如:不是my_datetime而是m_datetime等等。