使用 Oracle 的 PL/SQL 函数中的错误 "Invalid Instruction"

Error "Invalid Instruction" in PL/SQL function using Oracle

我在这里尝试创建一种布尔函数,但是当我尝试编译它时,它告诉我我的指令“truth INTEGER;”是不正确的。我无法弄清楚问题出在哪里,因为我在 Google 上看到的每个代码示例都与我的非常相似。使用 Oracle 对我来说是全新的,所以如果有人愿意帮助我,我有点不知所措...

我通过搜索尝试了很多东西,但没有任何效果,所以我在这里寻求帮助...

代码:

CREATE OR REPLACE FUNCTION HISTOTOX.matching_idipl (iDiplNumero INTEGER) RETURN INTEGER
 AS
  cpt INTEGER;
  truth INTEGER;
 
 BEGIN
         SELECT count(*) INTO cpt FROM GARNUCHE.INSC_DIPL WHERE IDIPL_NUMERO = iDiplNumero;
     IF cpt = 1 THEN 
        truth := 1;
     ELSE
        truth := 0;
     END IF;
        RETURN truth;
 END;

您报告的不是 Oracle 错误。我在我的 11g 中 复制了 你的代码,一切正常:

SQL>  CREATE OR REPLACE FUNCTION matching_idipl (iDiplNumero INTEGER) RETURN INTEGER
  2   AS
  3    cpt INTEGER;
  4    truth INTEGER;
  5
  6   BEGIN
  7           SELECT count(*) INTO cpt FROM INSC_DIPL WHERE IDIPL_NUMERO = iDiplNumero;
  8       IF cpt = 1 THEN
  9          truth := 1;
 10       ELSE
 11          truth := 0;
 12       END IF;
 13          RETURN truth;
 14   END;
 15   /

Function created.

SQL> select matching_idipl(1) from dual;

MATCHING_IDIPL(1)
-----------------
                1

SQL>

那么:您到底在哪里执行了该代码?您遇到了哪个错误(请提供确切的消息和 错误代码 )?