Thursday 26 February 2015

Use SUBSELECT in PS Query Expression

I encountered this error when I used a subselect in my PSQuery expression.

FROM clauses are not allowed in expressions (50,536)
SQL error. Stmt #: 5682 Error Position: 107 Return: 936 - ORA-00936: missing expression
A SQL error occurred. Please consult your system log for details.
Error in running query because of SQL Error, Code=936, Message=ORA-00936: missing expression (50,380)

Here's the workaround:

  1. Replace all SELECT with SE%TABLE()LECT
  2. Replace all FROM with FR%TABLE()OM
SE%TABLE()LECT
LEVEL0.PORTAL_LABEL || ' > ' || LEVEL1.PORTAL_LABEL || ' > '  || LEVEL2.PORTAL_LABEL || ' > '  ||  level3.PORTAL_LABEL PATH_TO_COMPONENT
FR%TABLE()OM 
PSPRSMDEFN level3
, PSPRSMDEFN level2
, PSPRSMDEFN level1
, PSPRSMDEFN LEVEL0
WHERE level3.PORTAL_URI_SEG2 = D.BARITEMNAME AND level3.PORTAL_PRNTOBJNAME = level2.PORTAL_OBJNAME
AND level2.PORTAL_PRNTOBJNAME = level1.PORTAL_OBJNAME
AND level1.PORTAL_PRNTOBJNAME = LEVEL0.PORTAL_OBJNAME
AND level3.PORTAL_NAME = level2.PORTAL_NAME
AND level2.PORTAL_NAME = level1.PORTAL_NAME
AND level1.PORTAL_NAME = LEVEL0.PORTAL_NAME
AND level3.portal_objname not in ('CO_NAVIGATION_COLLECTIONS','PORTAL_BASE_DATA')
AND level0.PORTAL_LABEL not like '%Navigation Collections%'
and ROWNUM = 1

Only works for old versions.
I believe this hack got patched in recent versions.

No comments:

Post a Comment