sql - PLSQL:在 if 语句中使用子查询错误 PLS-00405

标签 sql oracle if-statement plsql syntax-error

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

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

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

最佳答案

PL/SQL 在 if 中不支持嵌入式 SQL声明。所以你需要像这样重写你的代码:

create or replace function validate_kaart_code 
    (P10_KAART_CODE in CADEAUKAART.KAART_CODE%type)
    return boolean
is
    rv boolean;
    l_code CADEAUKAART.KAART_CODE%type;
BEGIN
    begin
        SELECT KAART_CODE into l_code
        FROM CADEAUKAART
        where KAART_CODE =:P10_KAART_CODE 
        and rownum = 1 -- only necessary if KAART_CODE is not unique
        ;
        rv := TRUE;
    exception
        when no_data_found then
            rv := FALSE;
    end;
    RETURN rv;
END;

我试图从您发布的片段中重建您的整个功能。如果这不是您想要的并且您无法将其转换为适合您的需要,请提供更多详细信息。

关于sql - PLSQL:在 if 语句中使用子查询错误 PLS-00405,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52346437/

相关文章:

java - 将数字 (22,21) 映射到 BigDecimal 时,Hibernate 在结果中丢失精度

c - 如何释放我的单链表程序?

regex - 替换为条件 DTE

sql - 错误 : operator does not exist: integer == integer

sql - 根据日期减值 SQL

sql - 将 .db 文件上传到 Azure SQL

oracle - 使用 eclipseLink 和 oracle db 时序列不存在异常

sql - Oracle 10g SQL 排序 VARCHAR2

MySQL 还是 Oracle?

php - 如何为多个查询编写 if 条件,例如