Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 遇到符号“=&引用;在甲骨文顶点_Sql_Oracle_Plsql - Fatal编程技术网

Sql 遇到符号“=&引用;在甲骨文顶点

Sql 遇到符号“=&引用;在甲骨文顶点,sql,oracle,plsql,Sql,Oracle,Plsql,我试图声明一个if语句,但是当我的代码看起来非常好时,我不断地得到错误 DECLARE prole varchar2(64); result varchar2(8); begin prole :=APEX_UTIL.GET_SESSION_STATE('user_role'); if prole:='employee' then result:='44'; elsif prole:='USER' then resu

我试图声明一个if语句,但是当我的代码看起来非常好时,我不断地得到错误

    DECLARE    
    prole varchar2(64);
    result varchar2(8);

   begin

   prole :=APEX_UTIL.GET_SESSION_STATE('user_role');

   if prole:='employee' then 

   result:='44';

   elsif prole:='USER' then

   result:='28';

   end if;

   return result;
    end;

在PL/SQL中,赋值运算符是
:=
,相等运算符是
=
。别把它们弄混了

顺便说一句,您可以使用
case
表达式完成整个过程:

begin
    return
        case apex_util.get_session_state('user_role')
            when 'employee' then '44'
            when 'USER' then '28'
        end;
end;
通常在PL/SQL中,只有函数才能返回某些内容。我对Apex不太熟悉,所以这里可能没问题

您的用户角色真的是
'employee'
(小写)和
'user'
(大写)吗?我希望它们是一致的,例如
'EMPLOYEE'
/
'USER'
'EMPLOYEE'
/
USER'


结果值是真正的文本字符串(
'44'
'28'
)还是数字(
44
28
)?

删除
,它应该可以工作。如果prole='employee'作为infor,您可以编写为:
结果:=案例prole当'employee'时,当'USER'时,然后'28'结束代码块将作为函数调用。在这种情况下,apex希望返回一些内容。
begin
    return
        case apex_util.get_session_state('user_role')
            when 'employee' then '44'
            when 'USER' then '28'
        end;
end;