ORA-30482: DISTINCT 選項在此函式中禁用的解決方法

梓沐發表於2016-02-15

今天在編寫儲存的時候需要使用到wm_concat這個函式,進行編譯的時候提示ORA-30482錯誤,儲存過程大概是如下

create or replace procedure pd_test

(

out_test_query  out   sys_refcursor

)

is

begin

  open out_test_query for

  select

    wm_concat(distinct(a.name)) name,

    wm_concat(distinct(a.age)) age,

    wm_concat(distinct(b.school)) school,

    wm_concat(distinct(b.score)) score,

    wm_concat(distinct(b.course)) course

  from

  tb_pro_student a,

  tb_pro_cource b

  where a.name=b.name;

  

end pd_bill_query_para;

編譯的時候提示ORA-30482 :DISTINCT 選項在此函式中禁用的解決方法

解決方法,修改儲存過程如下

create or replace procedure pd_test

(  

out_test_query  out   sys_refcursor

)

is

v_sql       varchar2(1024);

begin

  v_sql:='

  open out_test_query for

  select

    wm_concat(distinct(a.name)) name,

    wm_concat(distinct(a.age)) age,

    wm_concat(distinct(b.school)) school,

    wm_concat(distinct(b.score)) score,

    wm_concat(distinct(b.course)) course

  from

  tb_pro_student a,

  tb_pro_cource b

  where a.name=b.name';

 

  open out_test_query for v_sql;

end pd_bill_query_para;

該儲存過程即將包含vw_concat的語句打包給v_sql,然後直接使用open for即可,測試編譯透過,輸出結果正確

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29812844/viewspace-1988802/,如需轉載,請註明出處,否則將追究法律責任。

相關文章