2012-12-10 55 views
0

以前我嘗試過使用LISTAGG函數,但是因爲有可能輸出很長,甚至可能超過4000字節。字符串連接的結果太長的錯誤。我跟着蒂姆提到的關於implementation of a string aggregation function that returns a CLOB的AskTom頁面。SQL錯誤:在預期的地方找不到ORA-00923:FROM關鍵字

  CREATE TABLE FINAL_LOG AS 
      SELECT SESSION_DT, C_IP, CS_USER_AGENT, 
      concat_all_ot(WEB_LINK, ' ') 
      WITHIN GROUP(ORDER BY C_IP, CS_USER_AGENT) AS "WEBLINKS" 
       FROM weblog_views 
       GROUP BY C_IP, CS_USER_AGENT, SESSION_DT 
       ORDER BY SESSION_DT 

爲此,我得到以下錯誤,

SQL錯誤:ORA-00923:FROM關鍵字未找到預期

誰能告訴我在哪裏,我這個問題呢?

+0

你不需要'WITHIN GROUP'子句。沒關係,只有功能及其參數。 –

回答

5

如果您使用用戶定義的聚合函數,則可能需要省略WITHIN GROUP子句。由於堆組織表中的數據本身無序,因此在CREATE TABLE語句中指定ORDER BY子句也沒有意義。另外,如果您使用該鏈接中的代碼,則聚合函數的名稱是concat_allconcat_all_ot是對象類型。所以你想要像

CREATE TABLE FINAL_LOG AS 
    SELECT SESSION_DT, 
     C_IP, 
     CS_USER_AGENT, 
     concat_all(concat_expr(WEB_LINK, ' ')) AS "WEBLINKS" 
    FROM weblog_views  
    GROUP BY C_IP, 
      CS_USER_AGENT, 
      SESSION_DT 
+0

感謝您的回覆,但我收到錯誤「不是GROUP BY表達式」。 – user1874311

+0

@ user1874311 - 我編輯了我的答案。您提供的鏈接上的聚合函數的名稱是「concat_all」而不是「concat_all_ot」。 –

+0

我做了你的建議,我得到以下錯誤,SQL錯誤:ORA-06553:PLS-306:在調用'CONCAT_ALL'時參數錯誤的數量或類型 – user1874311

相關問題