【发布时间】:2019-12-10 19:51:36
【问题描述】:
我在 oracle apex 中有返回 true 或 false 的函数。当我使用 oracle apex 的 sqlcommand 函数时,我无法执行该函数
function authenticateUser(p_username in varchar2 ,p_password in varchar2 )
return boolean
is
p_user Users.USERNAME%type;
begin
select USERNAME into p_user from Users where upper(USERNAME)=upper(p_username) and upper(PASSWORD) = upper(p_password);
return true;
exception
when NO_DATA_FOUND then
return false;
end authenticateUser;
当我跑步时
begin
PKG_AUTHORIZATION.authenticateUser(:p_username,:p_password);
end;
错误显示为
ORA-06550: line 3, column 1:
PLS-00221: 'AUTHENTICATEUSER' is not a procedure or is undefined
ORA-06550: line 3, column 1:
PL/SQL: Statement ignored
ORA-06512: at "SYS.DBMS_SQL", line 1721
1. begin
2. PKG_AUTHORIZATION.authenticateUser(:p_username,:p_password);
3. end;
当我写作时
select PKG_AUTHORIZATION.authenticateUser(:p_username,:p_password) from dual;
它会抛出错误
ORA-00902: invalid datatype
【问题讨论】:
-
你不能从函数中选择结果,因为它返回一个布尔值,它不是 SQL 知道的数据类型。您的功能是否在包规范中定义?您是否需要使用架构限定名称?您是否有权运行该功能?我们看不到这个函数是如何在包中定义的或者你在运行它的人,所以答案很棘手。
标签: oracle oracle-apex