Oracle PL/SQL:PLS-00382:表达式的类型错误。忽略语句
我有一个“person”表,有两个字段“person\u name”和“person\u age” 我想写一个过程,返回sys\u refcursor,但计算一个额外的字段'is\u old'。por示例:Oracle PL/SQL:PLS-00382:表达式的类型错误。忽略语句,oracle,plsql,cursor,Oracle,Plsql,Cursor,我有一个“person”表,有两个字段“person\u name”和“person\u age” 我想写一个过程,返回sys\u refcursor,但计算一个额外的字段'is\u old'。por示例: PROCEDURE people_load(p_name IN VARCHAR2, P_RESULT OUT SYS_REFCURSOR) IS BEGIN DECLARE isOld BOOLEAN := false; CURSOR cursor
PROCEDURE people_load(p_name IN VARCHAR2, P_RESULT OUT SYS_REFCURSOR) IS
BEGIN
DECLARE
isOld BOOLEAN := false;
CURSOR cursorTemp IS SELECT person_name, person_age, is_old
WHERE person_name = p_name;
BEGIN
FOR _p IN cursorTemp
LOOP
IF _p.person_age > 75 THEN
_p.is_old:=TRUE;
END IF;
END LOOP;
¿¿P_RESULT:=cursorTemp; //open P_RESULT for (open cursorTemp);??
END;
END people_load;
我不知道如何将临时游标'cursorTemp'分配给OUT参数'p_RESULT'以返回结果
布尔值,只能在PL/SQL中使用
布尔值,只能在PL/SQL中使用
您应该在选择中进行计算
CURSOR cursorTemp IS
SELECT
person_name,
person_age,
CASE WHEN person_age>75 THEN 1 ELSE 0 END AS is_old
WHERE person_name = p_name;
您应该在选择中进行计算
CURSOR cursorTemp IS
SELECT
person_name,
person_age,
CASE WHEN person_age>75 THEN 1 ELSE 0 END AS is_old
WHERE person_name = p_name;
我在这上面浪费了7个小时。。。如果我知道你住在哪里,那就去你家里擦鞋吧。如果你花7个小时通过样本学习Oracle,那将是一次更好的学习体验。你还有更多的时间学习。祝你好运:-)非常感谢你的建议;)我在这上面浪费了7个小时。。。如果我知道你住在哪里,那就去你家里擦鞋吧。如果你花7个小时通过样本学习Oracle,那将是一次更好的学习体验。你还有更多的时间学习。祝你好运:-)非常感谢你的建议;)