我正在尝试在apex 5.1上正常工作的oracle apex 20上使用一项功能。我有一个交互式报告,并且非常添加这样的项目的价值:'''
SELECT /* PARALLEL(4)*/
o.id,
NULL
pregled,
o.OS_TIP,
o.SIFRA,
o.OS_TIP_PRETH,
o.PRETHODI,
o.OS_TIP_MASTER,
o.MASTER,
u.naziv || ' - ' || o.UGOVARATELJ
Ugovaratelj,
p.naziv || ' - ' || o.POSREDNIK
Posrednik,
t.naziv || ' ' || o.TRAJANJE
Trajanje,
o.POCETAK_OSIGURANJA,
o.ISTEK_OSIGURANJA,
o.POCETAK_PREMIJE,
o.KRAJ_PREMIJE,
o.DATUM_IZDANJA,
o.BROJ_RATA,
o.PREMIJA,
( SELECT CASE
WHEN MONTHS_BETWEEN (
TO_DATE (osd.kraj_premije, 'DD.MM.YYYY'),
TO_DATE (osd.pocetak_premije, 'DD.MM.YYYY')) <
12
THEN
ROUND (SUM (st.premija_neto), 2)
ELSE
ROUND (
SUM (st.premija_neto)
/ NVL (
( (FLOOR (
MONTHS_BETWEEN (
TO_DATE (osd.kraj_premije,
'DD.MM.YYYY'),
TO_DATE (osd.pocetak_premije,
'DD.MM.YYYY'))))
/ 12),
1),
2)
END godisnja
FROM os_dokument osd, stavka_dokumenta st
WHERE st.os_tip(+) = osd.os_tip
AND st.sifra(+) = osd.sifra
AND osd.os_tip(+) = o.os_tip
AND osd.sifra(+) = o.sifra
GROUP BY osd.pocetak_premije, osd.kraj_premije)
godisnja_premija,
r.naziv || ' - ' || o.REFERENT
Referent,
prodaja.F_STATUS_POLICE (O.OS_TIP, O.SIFRA)
STATUS_POLISE,
(SELECT forma
FROM odobrenje
WHERE odobrenje = o.odobrenje)
status_odobravanja,
sd.grupacija || sd.grupa || '.' || sd.cjenik
tarifa,
dms.postoji_dokument (o.id)
postoji_dokumentacija,
(SELECT k.tekst
FROM os_dokument_komentar k
WHERE k.OS_DOKUMENT_ID = o.id AND k.indikator = 1)
poruka,
o.korisnik,
DECODE ((SELECT k.tekst
FROM os_dokument_komentar k
WHERE k.OS_DOKUMENT_ID = o.id AND k.indikator = 1),
NULL, 'background-color:white',
'background-color:lightblue')
CSS_STYLE_PORUKA,
DECODE (dms.postoji_dokument (o.id),
'NE', 'background-color:white"',
'background-color:lightblue')
CSS_STYLE_DMS
FROM OS_DOKUMENT o,
in2_stranka p,
in2_stranka r,
in2_stranka u,
in2_stranka pl,
trajanje t,
stavka_dokumenta sd
WHERE o.posrednik = p.jmbg(+)
AND o.referent = r.jmbg(+)
AND o.ugovaratelj = u.jmbg(+)
AND o.trajanje = t.trajanje(+)
AND (o.os_tip = 'P08' OR o.os_tip LIKE 'N1%')
AND o.id = sd.id_os_dokument(+)
AND sd.rb(+) = 1
AND o.platitelj = pl.jmbg(+)
&FILTER.
'''FILTER是一个隐藏的页面项目,在页面加载时设置了一个进程,它包含一些代码。在最简单的版本中,它将包含“和1 = 1”,或者可以包含一些附加条件,例如“和o.POSREDNIK ='12345'”,正如我在Apex 5.1中所说的那样。但是在Apex 20中,我什至无法在代码编辑器中验证代码,我得到“ ORA-20999:无法解析SQL查询!
ORA-06550:第53行,第27列:ORA-00933:SQL命令未正确结束
“最后没有&FILTER的同一个select很好用。关于如何使它在Apex 20中起作用的任何建议?或者如何在select中插入一些代码?确实,它不再起作用了。
但是,如果你选择返回SQL查询的函数体作为源类型(而不是SQL查询),它将起作用。
Apex 20的真正不错的功能是,它RETURN
使用q引用机制自动将查询转换为子句,以防止可能出现的单引号问题。因此:你只需要更改源类型-Apex将为你完成其余工作,并且报告应能正常工作。至少对我有用。
它的工作原理:)谢谢。