我想创建一个控制访问过程,但我是PL / SQL的新手,我不明白错误信息 . 如果我创建函数编译它没关系,但如果我把代码放在授权模式中,我就会出错 . 我使用方案类型:PL / SQL函数返回布尔值 .
ORA-06550:第58行,第26列:PLS-00103:当期望以下之一时遇到符号“”:开始函数编译指示过程符号“开始插入之前”“继续 . ”ORA-06550:第60行,列21:PLS-00103:当遇到以下情况之一时遇到符号“文件结束”:(如果循环mod为空pragma raise返回选择更新,则为goto开始情况声明结束异常退出
declare function F_ACCES_AUX_PAGES
return BOOLEAN
is
-- Indicateurs pages
v_admn_pages tbl_admn_pages%rowtype;
v_employes tbl_employes%rowtype;
BEGIN
-- Lire les indicateurs de la page
select *
into v_admn_pages
from TBL_ADMN_PAGES
where PK_NUMERO_PAGE = v('APP_PAGE_ID');
select E.*
into v_employes
from TBL_EMPLOYES E,
USERS U
where E.PK_ID_EMPLOYE = U.FK_ID_EMPLOYE
and USER_NAME = v('APP_USER');
-- Vérifier si indicateurs U permettent l'accès. indU = OUI et indP = OUI
if v_admn_pages.IND_ACC_GESTIONNAIRE = 'OUI' and
v_employes.IND_ACC_GESTIONNAIRE = 'OUI' then
RETURN TRUE;
elsif v_admn_pages.IND_ACC_CONSULTANT = 'OUI' and
v_employes.IND_ACC_CONSULTANT = 'OUI' then
RETURN TRUE;
elsif v_admn_pages.IND_ACC_CLIENT = 'OUI' and
v_employes.IND_ACC_CLIENT = 'OUI' then
RETURN TRUE;
elsif v_admn_pages.IND_ACC_RH = 'OUI' and
v_employes.IND_ACC_RH = 'OUI' then
RETURN TRUE;
elsif v_admn_pages.IND_ACC_ADMIN_GPS = 'OUI' and
v_employes.IND_ACC_ADMIN_GPS = 'OUI' then
RETURN TRUE;
elsif v_admn_pages.IND_ACC_ADMIN_GST = 'OUI' and
v_employes.IND_ACC_ADMIN_GST = 'OUI' then
RETURN TRUE;
elsif v_admn_pages.IND_ACC_ADMIN_GRH = 'OUI' and
v_employes.IND_ACC_ADMIN_GRH = 'OUI' then
RETURN TRUE;
elsif v_admn_pages.IND_ACC_ADMIN_GDP = 'OUI' and
v_employes.IND_ACC_ADMIN_GDP = 'OUI' then
RETURN TRUE;
elsif v_admn_pages.IND_ACC_ADMIN_GAC = 'OUI' and
v_employes.IND_ACC_ADMIN_GAC = 'OUI' then
RETURN TRUE;
elsif v_admn_pages.IND_ACC_ADMIN_GDA = 'OUI' and
v_employes.IND_ACC_ADMIN_GDA = 'OUI' then
RETURN TRUE;
elsif v_admn_pages.IND_ACC_ADMIN_GPS = 'OUI' and
v_employes.IND_ACC_ADMIN_GPS = 'OUI' then
RETURN TRUE;
elsif v_admn_pages.IND_ACC_ADMIN_RDD = 'OUI' and
v_employes.IND_ACC_ADMIN_RDD = 'OUI' then
RETURN TRUE;
elsif v_admn_pages.IND_ACC_ADMIN_GDE = 'OUI' and
v_employes.IND_ACC_ADMIN_GDE = 'OUI' then
RETURN TRUE;
elsif v_admn_pages.IND_ACC_ADMIN_GPR = 'OUI' and
v_employes.IND_ACC_ADMIN_GPR = 'OUI' then
RETURN TRUE;
elsif v_admn_pages.IND_ACC_ADMIN_GSC = 'OUI' and
v_employes.IND_ACC_ADMIN_GSC = 'OUI' then
RETURN TRUE;
else
RETURN FALSE;
end if;
END F_ACCES_AUX_PAGES;
1 回答
您的函数声明用于匿名块中的本地函数;但是你没有完成块,因此它寻找
BEGIN
.您应该创建函数:
有关如何创建存储的PL / SQL程序,请参阅the documentation .