以下の手順を作成中にエラーが発生する場合があります。また、手順の一部を削除し、問題に直面している部分のみを含めました。問題は、decode節にありますので、助けてください!手順のコンパイル中にオラクルエラーが発生しました
[警告] ORA-24344:コンパイルエラー41分の84 PL/SQLでの成功: ORA-00907:欠落している右括弧33/4 PL/SQL:無視SQL文 (2:0):警告:コンパイルされたが、コンパイル・エラー以下
CREATE OR REPLACE PROCEDURE ERR_OUT (
in_Srcsyscd IN VARCHAR2)
IS
rcrdnums VARCHAR2 (32767);
rcrd_cnt INT;
BEGIN
rcrd_cnt := 500;
SELECT RTRIM (
XMLCAST (
XMLAGG (XMLELEMENT (e, RCRDNUM) ORDER BY RCRDNUM) AS CLOB),
',')
INTO rcrdnums
FROM (SELECT (ERR.RCRDNUM || ',') AS RCRDNUM
FROM tableName ERR
WHERE ROWNUM <= rcrd_cnt
AND ( in_srcsyscd IS NULL
OR (decode (REGEXP_COUNT (in_srcsyscd, ','),0,(ERR.Srcsyscd = in_srcsyscd),
(ERR.Srcsyscd IN
(SELECT DISTINCT srcsyscd
FROM tableName
WHERE srcsyscd IN
(SELECT err.srcsyscd
FROM tableName ERR
RIGHT OUTER JOIN
( SELECT UPPER (
REGEXP_SUBSTR (
in_Srcsyscd,
'[^,]+',
1,
LEVEL))
CNTRY_CD
FROM DUAL
CONNECT BY REGEXP_SUBSTR (in_Srcsyscd,
'[^,]+',
1,
LEVEL)
IS NOT NULL) CNTRY_P
ON (UPPER (
ERR.srcsyscd) !=
CNTRY_P.CNTRY_CD))
OR srcsyscd IS NULL)))))
私は問題に直面していると私が観察できるという括弧の数とは問題がないが、それでも、Oracleはこのためにエラーを投げているwhere句であると:
AND ( in_srcsyscd IS NULL
OR (decode (REGEXP_COUNT (in_srcsyscd, ','),0,(ERR.Srcsyscd = in_srcsyscd),
(ERR.Srcsyscd IN
(SELECT DISTINCT srcsyscd
FROM AMT_OWNER.AMT_EVNT_SPND_ERR_STG
WHERE srcsyscd IN
(SELECT err.srcsyscd
FROM TableName
RIGHT OUTER JOIN
( SELECT UPPER (
REGEXP_SUBSTR (
'CONCUR',
'[^,]+',
1,
LEVEL))
CNTRY_CD
FROM DUAL
CONNECT BY REGEXP_SUBSTR (
'CONCUR',
'[^,]+',
1,
LEVEL)
IS NOT NULL) CNTRY_P
ON (UPPER (
ERR.srcsyscd) !=
CNTRY_P.CNTRY_CD))
OR srcsyscd IS NULL)))))
「不足している右括弧」あなたのすべてを提供します。あなたがnotepad ++やかっこの助けを借りれば、 ...の最後の括弧が1つ見つからないことがわかります。 "OR srcsyscd IS NULL))))))" –
これはかっこの問題ではないようです。 –