Oracle SQL 00907. 00000 - “缺少右括号”

时间:2018-04-16 02:27:06

标签: sql oracle

我正在尝试将值插入另一个表的表中。用'Undefined'替换任何可能的空值,并且我创建了一个序列来填充我的一个列。我在第二行继续收到错误。

INSERT INTO PRODUCT_DIM
SELECT PRODUCT_SEQ.NEXTVAL AS PRODUCT_KEY, 
       NVL((PRODUCTID, PRODUCTDESCRIPTION, PRODUCTLINEID),'Undefined')
FROM PRODUCT_T;

3 个答案:

答案 0 :(得分:1)

NVL仅需要2个参数(最大值)。看看使用COALESCE,即。

COALESCE(param1, param2, param3, .... )

答案 1 :(得分:1)

您可以使用Connor演示的COALESCE函数。

使用NVL,您需要嵌套函数,如下所示:

INSERT INTO PRODUCT_DIM
SELECT PRODUCT_SEQ.NEXTVAL AS PRODUCT_KEY, 
    NVL(PRODUCTID, NVL(PRODUCTDESCRIPTION, NVL(PRODUCTLINEID, 'Undefined')))
FROM PRODUCT_T;

答案 2 :(得分:0)

我会说,实际上,你插入了4个不同的列,因此你需要4个独立的NVL,但很难猜测(这就是我们正在做的 - 猜测)。

如果您指定了应在PRODUCT_DIM表中填充的列列表,则会更容易回答。

INSERT INTO PRODUCT_DIM
  (product_key, 
   productid, 
   productdescription, 
   productlineid
  )
  SELECT PRODUCT_SEQ.NEXTVAL, 
         NVL(PRODUCTID         , 'Undefined'),
         NVL(PRODUCTDESCRIPTION, 'Undefined'),
         NVL(PRODUCTLINEID     , 'Undefined')
  FROM PRODUCT_T;