私は、SQL Devツールを使用して、Oracle 11g DBを使用しています。
Collect関数を 'Distinct'句とともに使用することができません。私の手技で使用されたとき、それは認識していません!参照用Oracle 11g and Collect Function
マイクエリ:
ここでvarchar2_ntt
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, '')
:
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
* collect関数を使用できません*は有効なOracleエラーメッセージではありません。 「うまくいかない」とは何か?エラーメッセージとは何ですか? –
VARCHAR2_NTTはパッケージ内のSQL型またはPL/SQL型として宣言されていますか? – Ollie
"エラー(49,6):PL/SQL:ORA-30482:DISTINCTオプションはこの機能では使用できません"これはエラーです。上記のクエリでproceudreをコンパイルします。また、VARCHAR @ _NTTは次のように定義されています。 "TYPE varchar2_nttを作成または置換するAS TABLE OF VARCHAR2(4000);" – user1230047