2014-09-04 23 views
0

我一直在玩这个查询一段时间,但我似乎无法使它在Oracle数据库中工作。我至少使用SQLServer语法来处理SQLServer 2008(不知道早期版本)。从SQLServer语法到Oracle

INSERT INTO WELCOME_PAGE_ITEMS 
SELECT (SELECT COALESCE(MAX(ID), 0) + 1 FROM WELCOME_PAGE_ITEMS), 
    'panel-' + (SELECT CAST(COALESCE(MAX(ID), 0) + 1 AS VARCHAR(20)) 
        FROM WELCOME_PAGE_ITEMS), 
    1, 
    (SELECT COUNT(PREFERED_ORDER) + 1 
     FROM WELCOME_PAGE_ITEMS 
     WHERE PREFERED_POSITION = 1), 
    0, 
    0, 
    'Custom Portlet', 
    1, 
    1, 
    3, 
    0 

它让我与COALESCE功能以及与'panel'+X字符串连接问题。

在此先感谢

+0

您是否使用SQL Server或Oracle? – 2014-09-04 14:43:34

+0

在Oracle中,你正在用'||'进行字符串连接 – yamny 2014-09-04 14:44:42

回答

0

你得在你查询的几个小问题:

  • Oracle中的字符串连接运算符是||(由@yamny提到的)
  • (假设ID是数字)使用to_char()将数字转换为字符串而不是CAST

小示例th在应该让你去(DUAL仅仅是一个虚拟表我用数据生成 - 甲骨文总是需要一个表来SELECT从):

with welcome_page_items(id) as (
    select cast(null as number) from dual 
) 
SELECT 'panel-' || to_char(coalesce(max(id), 0) + 1) 
FROM welcome_page_items