UNRESOLVED_ROUTINE错误类

SQLSTATE: 42883

不能解决函数< routineName >在搜索路径< searchPath >

参数

  • routineName:函数的名称不能解决。

  • searchPath:如果搜索模式的有序列表routineName没有模式合格。

解释

持久化功能由三名部分:<目录>。<模式>。<关系>。如果你不指定名称的所有三个部分,这是隐式地使用当前目录或当前模式完成。这是类似于你的工作目录文件系统如何影响哪些文件可以看到,除非你完全指定路径。

临时函数只存在于会话或查询,绝不是合格的。

最常见的原因找不到一个函数是:

  • 这个函数不存在。

  • 函数名是拼写错误。

  • 用户定义函数位于一个不同的模式。

  • 用户定义的函数并不位于当前模式。

  • 你不能查看用户定义函数,因为你没有访问权限。

  • 您正试图调用的内置函数不可用这个版本的砖。

缓解

减轻通过回顾以下错误。

  • 你拼写函数名不正确吗?

    使用“<模式>显示功能”验证正确的函数名。

  • 函数是一个不同的模式吗?

    如果函数是坐落在统一目录,目录运行以下查询:

    选择routine_schemainformation_schema.routines在哪里routine_name=“< routinename >”

    这个列表模式在当前目录功能所在。

    如果函数位于外部目录,统一使用“显示模式”找到候选模式。使用“<模式>显示功能”探测器的功能。

  • 你没有完全限定名称,和的结果吗的值current_schema ()”函数的限定名称不匹配?

    有资格functionName模式和目录,或运行“使用模式”设置隐式模式。

  • 你参考一个临时的函数,但在之前,过期,或不同的会话吗?

    重新创建临时函数使用“创建临时函数< routineName >…”,或者切换到使用持久化功能。

  • 你想发出一个DDL语句,如下降函数以防对象存在吗?

    问题声明使用如果存在条款,如:“下降函数< routineName >如果存在”

  • 你知道这个函数是存在的,但你不能看到它吗的显示功能吗?

    联系管理员获得访问功能。您可能还需要访问模式和目录。

如何解决这个错误的更多信息,参见函数解析

例子

>创建模式如果存在myschema;>创建取代函数myschemamyfunc()返回INT返回5;- - -——函数名拼写错误- - ->选择myschemamyfun();(UNRESOLVED_ROUTINE]不能解决函数myschemamyfun搜索路径(系统内装式,系统会话,spark_catalog默认的]。1pos7——使用显示函数来找到正确的nme>显示用户功能myschema;spark_catalogmyschemamyfunc——正确的拼写>选择myschemamyfunc();5- - -限定符被拼错- - ->创建模式如果存在wrongschema;>选择wrongschemamyfunc;(UNRESOLVED_ROUTINE]不能解决函数wrongschemamyfunc搜索路径(系统内装式,系统会话,spark_catalog默认的]。1pos7——找到候选模式>显示模式;myschemawrongschema——验证候选模式中存在的函数>显示用户功能myschema;spark_catalogmyschemamyfunc>选择myschemamyfunc();5- - -——改变当前模式找到一个不合格的函数- - ->选择myfunc();(UNRESOLVED_ROUTINE]不能解决函数myfunc搜索路径(系统内装式,系统会话,spark_catalog默认的]。1pos7>使用模式myschema;选择myfunc();5