UNRESOLVED_ROUTINE錯誤類
不能解決函數< routineName >
在搜索路徑< searchPath >
。
解釋
持久化功能由三名部分:<目錄>。<模式>。<關係>
。如果你不指定名稱的所有三個部分,這是隱式地使用當前目錄或當前模式完成。這是類似於你的工作目錄文件係統如何影響哪些文件可以看到,除非你完全指定路徑。
臨時函數隻存在於會話或查詢,絕不是合格的。
最常見的原因找不到一個函數是:
這個函數不存在。
函數名是拚寫錯誤。
用戶定義函數位於一個不同的模式。
用戶定義的函數並不位於當前模式。
你不能查看用戶定義函數,因為你沒有訪問權限。
您正試圖調用的內置函數不可用這個版本的磚。
緩解
減輕通過回顧以下錯誤。
你拚寫函數名不正確嗎?
使用“<模式>顯示功能”驗證正確的函數名。
函數是一個不同的模式嗎?
如果函數是坐落在統一目錄,目錄運行以下查詢:
選擇routine_schema從information_schema.routines在哪裏routine_name=“< routinename >”
這個列表模式在當前目錄功能所在。
如果函數位於外部目錄,統一使用“顯示模式”找到候選模式。使用“<模式>顯示功能”探測器的功能。
你沒有完全限定名稱,和的結果嗎的值current_schema ()”函數的限定名稱不匹配?
有資格
functionName
模式和目錄,或運行“使用模式”設置隱式模式。你參考一個臨時的函數,但在之前,過期,或不同的會話嗎?
重新創建臨時函數使用“創建臨時函數< routineName >…”,或者切換到使用持久化功能。
你想發出一個DDL語句,如
下降函數
以防對象存在嗎?問題聲明使用
如果存在
條款,如:“下降函數< routineName >如果存在”。你知道這個函數是存在的,但你不能看到它嗎的顯示功能嗎?
聯係管理員獲得訪問功能。您可能還需要訪問模式和目錄。
如何解決這個錯誤的更多信息,參見函數解析。
例子
>創建模式如果不存在myschema;>創建或取代函數myschema。myfunc()返回INT返回5;- - -——函數名拚寫錯誤- - ->選擇myschema。myfun();(UNRESOLVED_ROUTINE]不能解決函數”myschema”。”myfun”在搜索路徑(”係統”。”內裝式”,”係統”。”會話”,”spark_catalog”。”默認的”]。行1pos7——使用顯示函數來找到正確的nme>顯示用戶功能在myschema;spark_catalog。myschema。myfunc——正確的拚寫>選擇myschema。myfunc();5- - -限定符被拚錯- - ->創建模式如果不存在wrongschema;>選擇wrongschema。myfunc;(UNRESOLVED_ROUTINE]不能解決函數”wrongschema”。”myfunc”在搜索路徑(”係統”。”內裝式”,”係統”。”會話”,”spark_catalog”。”默認的”]。行1pos7——找到候選模式>顯示模式;myschemawrongschema——驗證候選模式中存在的函數>顯示用戶功能在myschema;spark_catalog。myschema。myfunc>選擇myschema。myfunc();5- - -——改變當前模式找到一個不合格的函數- - ->選擇myfunc();(UNRESOLVED_ROUTINE]不能解決函數”myfunc”在搜索路徑(”係統”。”內裝式”,”係統”。”會話”,”spark_catalog”。”默認的”]。行1pos7>使用模式myschema;選擇myfunc();5