gpt4 book ai didi

oracle - 返回 bool 值的函数在 "expression is of wrong type"上失败

转载 作者:行者123 更新时间:2023-12-03 21:05:10 25 4
gpt4 key购买 nike

我正在使用 oracle 11g,但我无法理解我的问题出在哪里。
我做了更困难的事情,但在过去的 5 小时里我在这件简单的事情上失败了:

这是函数体

FUNCTION legal_user(
level_existance number
,types_with_impel number)
RETURN BOOLEAN
IS
v_ret_val BOOLEAN;
BEGIN
v_ret_val := FALSE;
IF (level_existance*types_with_impel>0) then
v_ret_val := TRUE;
DBMS_OUTPUT.PUT_LINE('true');
else
DBMS_OUTPUT.PUT_LINE('false');
END IF;
return v_ret_val;
END legal_user;

这是规范:
FUNCTION legal_user(
level_existance number
,types_with_impel number)
RETURN BOOLEAN;

逻辑 AND 等价于
         A*B>0?true:false;   

我收到的错误消息是

ORA-06552: PL/SQL: 语句被忽略
ORA-06553: PLS-382: 表达式类型错误
06552. 00000 - "PL/SQL: %s"
*原因:
*行动:
行错误:1 列:7

这就是我在 IDE 中运行它的方式
 SELECT compt_tree_profile_q.legal_user(1,1)
FROM dual

最佳答案

纯 SQL 不识别 bool 类型,尽管 PL/SQL 可以。所以你的查询不知道这个函数返回的是什么数据类型..

该函数有效,因此您可以在另一个 pl/sql 块中使用

declare
myvar boolean;
begin
myvar := compt_tree_profile_q.legal_user(1,1);
end;

但是不能在纯 select 语句中使用此函数。

关于oracle - 返回 bool 值的函数在 "expression is of wrong type"上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5260238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com