PLSQL:在if语句错误PLS-00405中使用子查询 [英] PLSQL: using subquery in if-statement error PLS-00405

查看:118
本文介绍了PLSQL:在if语句错误PLS-00405中使用子查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尝试运行此代码时出现错误pls-00405:

I'm getting error pls-00405 when I try to run this code:

BEGIN
  IF :P10_KAART_CODE IN (SELECT KAART_CODE FROM CADEAUKAART) THEN
     RETURN TRUE;
  ELSE
    RETURN FALSE;
  END IF;
END;

对此有一些类似的问题,但找不到此简单代码的解决方案.有没有另一种写方法而不会遇到错误?

There are some similar questions about this but couldn't find a solution for this simple code. Is there another way of writing this without facing a error?

推荐答案

您可以尝试使用光标,或者:

You may try a cursor, alternatively :

DECLARE
  v_flag  boolean := FALSE;  
BEGIN
 FOR c IN ( SELECT KAART_CODE FROM CADEAUKAART )
 LOOP
   IF :P10_KAART_CODE = c.KAART_CODE THEN
     v_flag := TRUE;
     EXIT;
   END IF;
  EXIT WHEN NO_DATA_FOUND;
 END LOOP;
     RETURN v_flag;
END;

不允许使用select语句,您可能会列出KAART_CODE返回值的所有成员,例如

By your way using a select statement is not allowed, you might list all the members for the returning values of KAART_CODE such as

IF :P10_KAART_CODE IN ('aAA','BBb','ccC'..) THEN

但不是最好的方法,它很容易列出所有匹配的值.

but which is not preferable and nice to list all matching values .

这篇关于PLSQL:在if语句错误PLS-00405中使用子查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆