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