How to solve this syntax error in function (resolved) [message #503677] |
Tue, 19 April 2011 00:40 |
|
Hi Friends,
I am new to oracle and I was required to convert my T-SQL function which created by me into Oracle function.
I have tried many samples and still fail to run this function on my TOAD 9.0:
Please any kind heart there guide me through:
Following is my Function which I have attempted in oracle:
CREATE OR REPLACE FUNCTION BASS_FNGETAccessList
( var_Id VARCHAR2(15),var_uType CHAR(1))
RETURN VARCHAR2(1000)
IS
var_ItemList VARCHAR2(1000);
var_acsFlag INT;
BEGIN
IF var_uType = 'R' THEN
SELECT ACCESSFLAG INTO var_acsFlag from BASSCOMMON.BASS_SEC_ROLE_GRANT
where ROLEID = var_Id and ACCESSRIGHTID = 'VESSEL' aND ELEMENTID = 'MY_VESSELS';
ELSIF var_uType = 'U' THEN
SELECT ACCESSFLAG INTO var_acsFlag from BASSCOMMON.BASS_SEC_USER_GRANT
where USERID = var_Id and ACCESSRIGHTID = 'VESSEL' aND ELEMENTID = 'MY_VESSELS';
END IF;
IF var_acsFlag = 2 THEN
var_ItemList := 'ALL';
ELSIF var_uType = 'R' THEN
SELECT RTRIM(XMLAGG(XMLELEMENT(e,ITEM || ',')).EXTRACT('//text()'),',') INTO var_ItemList
from BASSCOMMON.BASS_SEC_ROLE_GRANT_ITEM
WHERE ROLEID = var_Id and REC_DELETED = 0;
ELSIF var_uType = 'U' THEN
SELECT RTRIM(XMLAGG(XMLELEMENT(e,ITEM || ',')).EXTRACT('//text()'),',') INTO var_ItemList
FROM(
SELECT ITEM from BASSCOMMON.BASS_SEC_USER_GRANT_ITEM
where USERID = var_Id and REC_DELETED = 0
UNION
SELECT ITEM FROM BASS_SEC_ROLE_GRANT_ITEM
where ROLEID = var_Id and REC_DELETED = 0
)tmp;
END IF;
return var_ItemList;
END;
[mod-edit: code tags added by bb; next time please add them yourself. And MC to limit the size of lines to 80 characters width; next time do it yourself.]
[Updated on: Tue, 19 April 2011 13:20] by Moderator Report message to a moderator
|
|
|
|
|
|
Re: How to solve this syntax error in function [message #503709 is a reply to message #503687] |
Tue, 19 April 2011 01:53 |
|
Thanks lot , Barbara Boehmer.
After I made the changes like you have advised then it is managed to executed. I am trying to test the function which I have created like this :-
select FNGETAccessList('DY','R') from dual;
Unfortunately, I am getting error like :
ORA-00904: "FNGETAccessList": invalid identifier.
Do you have any idea what could be the wrong?
|
|
|
|
|
|
|