0

前に LISTAGG 関数を使ってみたのですが、出力がかなり長くなる可能性があるため、4000 バイトを超える可能性もあります..文字列連結の結果が長すぎるというエラーが発生し続けました。CLOB を返す文字列集計関数の実装について Tim が参照している AskTom ページをたどりました。

           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 キーワードが予期された場所に見つかりません

これのどこが間違っているのか誰か教えてもらえますか?

4

1 に答える 1

5

ユーザー定義の集計関数を使用している場合は、おそらくWITHIN GROUP句を省略する必要があります。また、ヒープ構成テーブルのデータは本質的に順序付けされていないためORDER BY、ステートメントで句を指定することは意味がありません。CREATE TABLEまた、そのリンクのコードを使用している場合、集計関数の名前はです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
于 2012-12-10T11:57:08.600 に答える