For LOOP with group by insert into ORA-06550 Column NOT ALLOWED HERE 错误
For LOOP with group by insert into ORA-06550 Column NOT ALLOWED HERE error
我在编写用于插入 table 的过程时遇到问题,该过程具有 select 语句并在 for 循环中使用 group by。
下面是我的代码:
begin
FOR R IN (WITH
bez_oib
AS
(SELECT a.EXT_ACCOUNT_ID,
a.ACCOUNT_ID,
c.NAME,
c.ATTRIBUTE_VALUE_1 AS oib3
FROM MD_ACCOUNTS a, MD_CONTACTS c
WHERE a.ACCOUNT_ID = c.REFERENCE_ID
AND c.REFERENCE_TYPE_ID = 2
AND c.CONTACT_TYPE_ID = 1
AND a.EXT_ACCOUNT_ID IN ( SELECT a.EXT_ACCOUNT_ID
FROM MD_ACCOUNTS a
GROUP BY a.EXT_ACCOUNT_ID
HAVING COUNT (DISTINCT a.account_id) > 1)
AND c.ATTRIBUTE_VALUE_1 IS NULL),
sa_oib
AS
(SELECT a.EXT_ACCOUNT_ID,
a.ACCOUNT_ID,
c.NAME,
c.ATTRIBUTE_VALUE_1 AS oib2
FROM MD_ACCOUNTS a, MD_CONTACTS c
WHERE a.ACCOUNT_ID = c.REFERENCE_ID
AND c.REFERENCE_TYPE_ID = 2
AND c.CONTACT_TYPE_ID = 1
AND a.EXT_ACCOUNT_ID IN ( SELECT a.EXT_ACCOUNT_ID
FROM MD_ACCOUNTS a
GROUP BY a.EXT_ACCOUNT_ID
HAVING COUNT (DISTINCT a.account_id) > 1)
AND c.ATTRIBUTE_VALUE_1 IS NOT NULL)
SELECT BEZ_OIB.EXT_ACCOUNT_ID as SIFRA_KK,
BEZ_OIB.ACCOUNT_ID as a,
BEZ_OIB.NAME as c ,
BEZ_OIB.oib3 as b ,
SUM (IH1.REST_TO_PAY) AS PREOSTALI_DUG_BEZ_OIB,
SA_OIB.EXT_ACCOUNT_ID as s,
SA_OIB.ACCOUNT_ID as d,
SA_OIB.NAME as e,
SA_OIB.oib2 as f,
SUM (IH2.REST_TO_PAY) AS PREOSTALI_DUG_SA_OIB
FROM bez_oib,
sa_oib,
CA_INVOICE_HEADERS IH1,
CA_INVOICE_HEADERS IH2
WHERE bez_oib.EXT_ACCOUNT_ID = sa_oib.EXT_ACCOUNT_ID
AND bez_oib.NAME <> sa_oib.name
AND BEZ_OIB.ACCOUNT_ID = IH1.ACCOUNT_ID(+)
AND SA_OIB.ACCOUNT_ID = IH2.ACCOUNT_ID(+)
AND BEZ_OIB.EXT_ACCOUNT_ID NOT IN ('30150151054',
'33671110205',
'31841000148',
'31840520300',
'30200150216',
'33670011076')
GROUP BY BEZ_OIB.EXT_ACCOUNT_ID,
BEZ_OIB.ACCOUNT_ID,
BEZ_OIB.NAME,
BEZ_OIB.oib3,
SA_OIB.EXT_ACCOUNT_ID,
SA_OIB.ACCOUNT_ID,
SA_OIB.NAME,
SA_OIB.oib2)
LOOP
insert into dun_exception (ID, TYPE, VALUE, ACTION, VALID_FROM, VALID_TO, STATE, NOTE, CREATED_BY, CREATE_DATE, MODIFIED_BY, MODIFY_DATE, PROC_NAME, BUYER_ID, REASON) values (DUN_EXCEPTION_SEQ.nextval,'BUYER_ID',r.sifra_kk,null,date'2021-10-26', date'2022-12-31',1,'Jedna ŠK, različit naziv, ima OIB - nema OIB', 'sbelcic',sysdate,null,null,nul,null,null);
END LOOP;
END;
在我尝试执行它后,出现以下错误:
Error report -
ORA-06550: line 66, column 351:
PL/SQL: ORA-00984: column not allowed here
特别错误的列引用了 group by
语句的最后一行。
代码应该将值插入 table,但它不起作用。
有人可以帮忙吗?
那是 nul
,斯捷潘。
<snip>
VALUES (DUN_EXCEPTION_SEQ.NEXTVAL,
'BUYER_ID',
r.sifra_kk,
NULL,
DATE '2021-10-26',
DATE '2022-12-31',
1,
'Jedna ŠK, različit naziv, ima OIB - nema OIB',
'sbelcic',
SYSDATE,
NULL,
NULL,
nul, --> here
NULL,
NULL);
我在编写用于插入 table 的过程时遇到问题,该过程具有 select 语句并在 for 循环中使用 group by。
下面是我的代码:
begin
FOR R IN (WITH
bez_oib
AS
(SELECT a.EXT_ACCOUNT_ID,
a.ACCOUNT_ID,
c.NAME,
c.ATTRIBUTE_VALUE_1 AS oib3
FROM MD_ACCOUNTS a, MD_CONTACTS c
WHERE a.ACCOUNT_ID = c.REFERENCE_ID
AND c.REFERENCE_TYPE_ID = 2
AND c.CONTACT_TYPE_ID = 1
AND a.EXT_ACCOUNT_ID IN ( SELECT a.EXT_ACCOUNT_ID
FROM MD_ACCOUNTS a
GROUP BY a.EXT_ACCOUNT_ID
HAVING COUNT (DISTINCT a.account_id) > 1)
AND c.ATTRIBUTE_VALUE_1 IS NULL),
sa_oib
AS
(SELECT a.EXT_ACCOUNT_ID,
a.ACCOUNT_ID,
c.NAME,
c.ATTRIBUTE_VALUE_1 AS oib2
FROM MD_ACCOUNTS a, MD_CONTACTS c
WHERE a.ACCOUNT_ID = c.REFERENCE_ID
AND c.REFERENCE_TYPE_ID = 2
AND c.CONTACT_TYPE_ID = 1
AND a.EXT_ACCOUNT_ID IN ( SELECT a.EXT_ACCOUNT_ID
FROM MD_ACCOUNTS a
GROUP BY a.EXT_ACCOUNT_ID
HAVING COUNT (DISTINCT a.account_id) > 1)
AND c.ATTRIBUTE_VALUE_1 IS NOT NULL)
SELECT BEZ_OIB.EXT_ACCOUNT_ID as SIFRA_KK,
BEZ_OIB.ACCOUNT_ID as a,
BEZ_OIB.NAME as c ,
BEZ_OIB.oib3 as b ,
SUM (IH1.REST_TO_PAY) AS PREOSTALI_DUG_BEZ_OIB,
SA_OIB.EXT_ACCOUNT_ID as s,
SA_OIB.ACCOUNT_ID as d,
SA_OIB.NAME as e,
SA_OIB.oib2 as f,
SUM (IH2.REST_TO_PAY) AS PREOSTALI_DUG_SA_OIB
FROM bez_oib,
sa_oib,
CA_INVOICE_HEADERS IH1,
CA_INVOICE_HEADERS IH2
WHERE bez_oib.EXT_ACCOUNT_ID = sa_oib.EXT_ACCOUNT_ID
AND bez_oib.NAME <> sa_oib.name
AND BEZ_OIB.ACCOUNT_ID = IH1.ACCOUNT_ID(+)
AND SA_OIB.ACCOUNT_ID = IH2.ACCOUNT_ID(+)
AND BEZ_OIB.EXT_ACCOUNT_ID NOT IN ('30150151054',
'33671110205',
'31841000148',
'31840520300',
'30200150216',
'33670011076')
GROUP BY BEZ_OIB.EXT_ACCOUNT_ID,
BEZ_OIB.ACCOUNT_ID,
BEZ_OIB.NAME,
BEZ_OIB.oib3,
SA_OIB.EXT_ACCOUNT_ID,
SA_OIB.ACCOUNT_ID,
SA_OIB.NAME,
SA_OIB.oib2)
LOOP
insert into dun_exception (ID, TYPE, VALUE, ACTION, VALID_FROM, VALID_TO, STATE, NOTE, CREATED_BY, CREATE_DATE, MODIFIED_BY, MODIFY_DATE, PROC_NAME, BUYER_ID, REASON) values (DUN_EXCEPTION_SEQ.nextval,'BUYER_ID',r.sifra_kk,null,date'2021-10-26', date'2022-12-31',1,'Jedna ŠK, različit naziv, ima OIB - nema OIB', 'sbelcic',sysdate,null,null,nul,null,null);
END LOOP;
END;
在我尝试执行它后,出现以下错误:
Error report -
ORA-06550: line 66, column 351:
PL/SQL: ORA-00984: column not allowed here
特别错误的列引用了 group by
语句的最后一行。
代码应该将值插入 table,但它不起作用。
有人可以帮忙吗?
那是 nul
,斯捷潘。
<snip>
VALUES (DUN_EXCEPTION_SEQ.NEXTVAL,
'BUYER_ID',
r.sifra_kk,
NULL,
DATE '2021-10-26',
DATE '2022-12-31',
1,
'Jedna ŠK, različit naziv, ima OIB - nema OIB',
'sbelcic',
SYSDATE,
NULL,
NULL,
nul, --> here
NULL,
NULL);