我正在使用ORACLE 11g DB,通过SQL开发工具。
无法将Collect函数与'Distinct'子句一起使用。在我的程序中使用时,它不能识别!Oracle 11g和Collect功能
我的查询以供参考:
SELECT nvl(spicd.company_code, '') companycode
, nvl(scc.company_description, '') companydesc
, nvl(spicd.plant_code, '') plantcode
, CAST(COLLECT(DISTINCT svh.haulier_code) AS varchar2_ntt) hauliercode
, CAST(COLLECT(DISTINCT sh.hauier_name) AS varchar2_ntt) hauliername
FROM saistb_company_code scc
, saistb_pve_indv_contact_det spicd
LEFT OUTER JOIN saistb_vendor_haulier svh
ON svh.company_code = spicd.company_code
AND svh.plant_code = spicd.plant_code
AND svh.vendor_code = spicd.vendor_code
LEFT OUTER JOIN saistb_haulier sh
ON sh.haulier_code = svh.haulier_code
WHERE scc.company_code = spicd.company_code
AND spicd.company_code LIKE <<companycode>>
AND spicd.plant_code LIKE <<plantcode>>
GROUP BY nvl(spicd.company_code, '')
, nvl(scc.company_description, '')
, nvl(spicd.plant_code, '')
这里varchar2_ntt
是:
create or replace TYPE varchar2_ntt AS TABLE OF VARCHAR2(4000);
返回的错误是:
Error(49,6): PL/SQL: ORA-30482: DISTINCT option not allowed for this function
*无法使用收集功能*不是有效的Oracle错误消息。什么“不工作”?什么是错误信息? – 2012-02-24 07:35:34
将VARCHAR2_NTT声明为包中的SQL类型或PL/SQL类型? – Ollie 2012-02-24 09:12:36
“错误(49,6):PL/SQL:ORA-30482:此功能不允许使用DISTINCT选项”...这是我得到的错误我使用上述查询编译过程。另外,VARCHAR @ _NTT被定义为...“创建或替换TYPE varchar2_ntt AS TABLE OF VARCHAR2(4000);” – user1230047 2012-02-27 06:12:31