SQL Select中的序列

时间:2009-08-07 14:39:58

标签: sql oracle

我在SELECT语句中使用我的序列时遇到了一些问题。

SELECT
     c.cust_name,
     c.site,
     customer_id_seq.nextval    
FROM
     customer c
WHERE
     c.customer_id IS NULL
ORDER BY
     c.site_code ASC
;

给我一​​个错误:

  
      
  1. 00000 - “此处不允许使用序列号”   *原因:指定的序列号(CURRVAL或NEXTVAL)是   不当          在声明中。   *操作:删除序列号。
  2.   

这可能是显而易见的我做错了所以希望这将是一个简单的答案。

3 个答案:

答案 0 :(得分:14)

您不能在ORDER BY的查询中使用序列。

删除ORDER BY或放入子查询:

SELECT  q.*, customer_id_seq.nextval    
FROM    (
        SELECT  c.cust_name,
                c.site
        FROM    customer c
        WHERE   c.customer_id IS NULL
        ORDER BY
                c.site_code ASC
        ) q

答案 1 :(得分:1)

for IBM Imformix

在SELECT语句中,您不能在以下上下文中指定NEXTVAL或CURRVAL:

  • 在使用DISTINCT关键字的投影列表中
  • 在WHERE,GROUP BY或ORDER BY子句中
  • 在子查询中
  • 当UNION运算符组合SELECT语句

答案 2 :(得分:1)

为什么不使用rownum而不是从序列中获取值?