2014-09-04 26 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