PLS-00103:遇到符号“文件结尾”编译错误

Posted

技术标签:

【中文标题】PLS-00103:遇到符号“文件结尾”编译错误【英文标题】:PLS-00103: Encountered the symbol "end-of-file" compile error 【发布时间】:2013-07-19 14:16:34 【问题描述】:

找不到任何错误,但它编译时出错。有人看到我看不见的东西吗?

CREATE OR REPLACE FUNCTION myusername.fun_hr_format_phone (tmp in VARCHAR2) RETURN VARCHAR2 
 IS tmpVar VARCHAR2(12);

BEGIN

  SELECT DECODE(
    LENGTH(tmp),
    10, SUBSTR(tmp,1,3) || '-' || SUBSTR(tmp,4,3) || '-' || SUBSTR(tmp,7,4),
    7, SUBSTR(tmp,1,3) || '-' || SUBSTR(tmp,4,4), tmp
  ) INTO tmpVar FROM dual;

  RETURN tmpVar;

  EXCEPTION
    WHEN NO_DATA_FOUND THEN NULL;
    WHEN OTHERS THEN RAISE;

END;
/

【问题讨论】:

@user2599766:代码看起来很完美,您使用的是哪个工具?SQLFIDDLE 键入 show errors 以显示语法错误并编辑您的帖子以包含错误。您的 when others then raise 子句毫无意义,应该删除,但这不会导致编译错误。 在 TOAD 中工作,错误是:PLS-00103:在预期以下情况之一时遇到符号“文件结尾”:begin function package pragma procedure subtype type use 形成当前光标 奇怪的是,它编译了另外 2 个,它只是我的 toad 实例导致了问题......我使用的是 TOAD 版本 12.0.0.61 【参考方案1】:

如果您使用的是 SQL*Plus:请注意空行,您的代码在语法上完全正确。

【讨论】:

SQL*Plus 无论如何都不介意它们用于 PL/SQL。还有一个set sqlblanklines 命令来切换它是否介意他们的SQL。

以上是关于PLS-00103:遇到符号“文件结尾”编译错误的主要内容,如果未能解决你的问题,请参考以下文章

PL SQL 遇到符号“文件结尾”... PLS-00103

PLS-00103:在简单更新块中遇到符号“文件结尾”

PLS-00103:在预期以下之一时遇到符号“文件结尾”

Oracle - PLS-00103:触发器 - 文件结束错误

执行脚本时遇到 PLS-00103 错误

遇到符号“文件结尾” - plsql