Hi,
We wrote the following function like an entry point for a particular user's permission
function:
Here's the source of the function...
CREATE FUNCTION HASPERMONMENU (
MENUENTRYID CHAR(50),
GRANTEDCOMPANYID FIXED(9,0),
GRANTEDHUMANRESOURCEID FIXED(9,0),
GRANTEDDSTARTCHR TIMESTAMP,
PERMISSIONTYPEID FIXED(9,0))
RETURNS NUMBER AS
VAR MSG VARCHAR(4000);
L_MENUENTRYID CHAR(50);
L_GRANTEDCOMPANYID FIXED(9,0);
L_GRANTEDHUMANRESOURCEID FIXED(9,0);
L_GRANTEDDSTARTCHR TIMESTAMP;
L_PERMISSIONTYPEID FIXED(9,0);
BEGIN
SET L_MENUENTRYID=MENUENTRYID;
SET L_GRANTEDCOMPANYID=GRANTEDCOMPANYID;
SET L_GRANTEDHUMANRESOURCEID=GRANTEDHUMANRESOURCEID;
SET L_GRANTEDDSTARTCHR=GRANTEDDSTARTCHR;
SET L_PERMISSIONTYPEID=PERMISSIONTYPEID;
DELETE FROM PPORTAL.LOG_TABLE;
SET MSG='CALLING --> FUNCTION HASPERMONMENU';
CALL PPORTAL.MYPUTLINE(:MSG);
SET MSG='BEFORE...';
CALL PPORTAL.MYPUTLINE(:MSG);
SET MSG='L_MENUENTRYID='||L_MENUENTRYID;
CALL PPORTAL.MYPUTLINE(:MSG);
SET MSG='MENUENTRYID='||MENUENTRYID;
CALL PPORTAL.MYPUTLINE(:MSG);
IF GRANTEDCOMPANYID IS NULL OR GRANTEDHUMANRESOURCEID IS NULL OR GRANTEDDSTARTCHR
IS NULL OR
MENUENTRYID IS NULL OR PERMISSIONTYPEID IS NULL THEN
RETURN 0;
IF ISEMPLOYEEINCONTEXT(L_GRANTEDCOMPANYID, L_GRANTEDHUMANRESOURCEID,
L_GRANTEDDSTARTCHR)=0 THEN
RETURN 0;
SET MSG='AFTER';
CALL PPORTAL.MYPUTLINE(:MSG);
SET MSG='L_MENUENTRYID='||L_MENUENTRYID;
CALL PPORTAL.MYPUTLINE(:MSG);
SET MSG='MENUENTRYID='||MENUENTRYID;
CALL PPORTAL.MYPUTLINE(:MSG);
RETURN 1;
END;
//
MYPUTLINE is simply a dbprocedure that writes a result on a logging table...
Here's the trace retrieved from the "logging table"
2004-06-12 11:17:35.509124 CALLING --> FUNCTION HASPERMONMENU
2004-06-12 11:17:35.509502 BEFORE...
2004-06-12 11:17:35.509802 L_MENUENTRYID=test
2004-06-12 11:17:35.510109 MENUENTRYID=test
2004-06-12 11:17:35.510480 CALLING --> FUNCTION ISEMPLOYEEINCONTEXT
2004-06-12 11:17:35.510788 COMPANYID=1
2004-06-12 11:17:35.511079 HUMANRESOURCEID=200027
2004-06-12 11:17:35.511376 DSTARTCHR=2004-05-26 00:00:00.000000
2004-06-12 11:17:35.512276 AFTER
2004-06-12 11:17:35.512610 L_MENUENTRYID=test
2004-06-12 11:17:35.512918 MENUENTRYID=
as you can see the value of parameter MENUENTRYID disappears... and the same thing
happens for the others parameters... (GRANTEDCOMPANYID, GRANTEDHUMANRESOURCEID ,
etc...) Note that MENUENTRYID is not used inside the function... so its value doesn't
change at all...
thanks in advance
Joannes