PL/SQL 函数错误 - PLS-00103:遇到符号“IS”

Posted

技术标签:

【中文标题】PL/SQL 函数错误 - PLS-00103:遇到符号“IS”【英文标题】:PL/SQL Function Error - PLS-00103: Encountered the symbol "IS" 【发布时间】:2012-11-04 05:07:48 【问题描述】:

我正在尝试创建一个简单的 PL/SQL 函数,但它返回错误 -> PLS-00103:遇到符号“IS”。我不确定这里出了什么问题,所以那里的任何人都可以帮忙。我按照以下步骤操作 -

Step1 - 使用 sysdba 登录 - sqlplus / as sysdba

Step2 - 在C:\ 下使用以下代码创建了一个文件名test.sql -

CREATE OR REPLACE FUNCTION employer_details_func
RETURN VARCHAR(20);
IS 
  emp_name VARCHAR(20); 
BEGIN 
SELECT first_name INTO emp_name
FROM emp_tbl WHERE empID = '100';
RETURN emp_name;
END;
/ 

Step3 - 运行以下命令 -

SQL>@C:\test.sql
Warning: Function created with compilation errors.
SQL> show error function Func;
Errors for FUNCTION FUNC:
LINE/COL ERROR
5/1      PLS-00103: Encountered the symbol "IS"
SQL>

不知道为什么我会收到这个奇怪的错误。非常感谢任何帮助。

【问题讨论】:

当您登录 AS SYSDBA 时,您连接到 SYS 帐户。请不要这样做。 SYS 是一个非常强大的帐户,因为它拥有数据字典。因此,如果我们不了解我们在做什么,很容易破坏作为 SYS 工作的数据库。没有冒犯,但你的问题的主旨(一个微不足道的语法错误)表明这是你的情况。使用 SYS 创建应用程序用户,然后使用它创建架构对象。 【参考方案1】:

如下创建你的函数并尝试

CREATE OR REPLACE FUNCTION employer_details_func
    RETURN VARCHAR2
IS
    emp_name   VARCHAR2 (20);
BEGIN
    SELECT  first_name
      INTO  emp_name
      FROM  emp_tbl
     WHERE  empID = '100';

    RETURN emp_name;
END;
/

【讨论】:

还是同样的错误:( - 5/1 PLS-00103: 遇到符号“IS” 你可以尝试从 sql plus 执行你的函数为select employer_details_func from dual; Polppan - 为你 +1 :) - 使用上面的语句,我可以看到输出 - SQL> select employer_details_func from dual; EMPLOYER_DETAILS_FUNC ---------------------- sita 所有功能都存储在双?不知道为什么编译过程中出现奇怪的警告? dual 是一种虚拟表,您可以在其中使用 select 语句执行函数。更多信息here。当我从脚本执行你的函数时,它编译没有任何错误。 那么可能是一些软件问题。无论如何,你通过建议运行它对我帮助很大:)。谢谢一帮朋友。 ++ 为您提供建议。

以上是关于PL/SQL 函数错误 - PLS-00103:遇到符号“IS”的主要内容,如果未能解决你的问题,请参考以下文章

令人沮丧的 PL/SQL 错误...PLS-00103

PLS--00103 pl/sql 中的错误

琐碎的 PL/SQL 块生成令人沮丧的 PLS-00103 错误

Oracle PL/SQL 错误 PLS-00103

在 PL/SQL 中编译包时出错。错误(7,1):PLS-00103:遇到符号“CREATE”

Pl SQL Oracle PLS-00103:遇到符号“CREATE”