다음을 통해 공유


UNRESOLVED_ROUTINE 오류 클래스

SQLSTATE: 42883

검색 경로<routineName>에서 함수 <searchPath> 를 확인할 수 없습니다.

매개 변수

  • routineName: 확인할 수 없는 함수의 이름입니다.
  • searchPath: 스키마가 한정되지 않은 경우 routineName 검색된 순서가 지정된 스키마 목록입니다.

설명

지속형 함수는 세 가지 이름 부분으로 <catalog>.<schema>.<relation>구성됩니다. 이름의 세 부분을 모두 지정하지 않으면 현재 카탈로그 또는 현재 스키마를 사용하여 암시적으로 완료됩니다. 이는 경로를 완전히 지정하지 않는 한 파일 시스템의 작업 디렉터리가 볼 수 있는 파일에 영향을 주는 방식과 유사합니다.

임시 함수는 세션 또는 쿼리 내에만 존재하며 정규화되어서는 안 됩니다.

함수를 찾지 못하는 가장 일반적인 이유는 다음과 같습니다.

  • 함수가 없습니다.
  • 함수 이름의 철자가 잘못되었습니다.
  • 사용자 정의 함수는 다른 스키마에 있습니다.
  • 사용자 정의 함수가 현재 스키마에 없습니다.
  • 액세스 권한이 없으므로 사용자 정의 함수를 볼 수 없습니다.
  • 호출하려는 기본 제공 함수는 이 Azure Databricks 릴리스에서 사용할 수 없습니다.

완화 방법

다음을 검토하여 오류를 완화합니다.

  • 함수 이름을 잘못 입력했나요?

    올바른 함수 이름을 확인하는 데 사용합니다 SHOW FUNCTIONS IN <schema> .

  • 함수가 다른 스키마에 있나요?

    함수가 Unity 카탈로그의 카탈로그에 있는 경우 다음 쿼리를 실행합니다.

    SELECT routine_schema FROM information_schema.routines WHERE routine_name = '<routinename>'

    함수가 있는 현재 카탈로그 내의 스키마를 나열합니다.

    함수가 Unity 카탈로그 외부에 있는 경우 후보 스키마를 찾는 데 사용합니다 SHOW SCHEMAS . 함수를 검색하는 데 사용합니다 SHOW FUNCTIONS IN <schema> .

  • 이름을 정규화하지 않았으므로 결과가 함수의 VALUES current_schema() 정규화된 이름과 일치하지 않나요?

    해당 스키마 및 카탈로그로 한정 functionName 하거나 실행 USE SCHEMA 하여 암시적 스키마를 설정합니다.

  • 임시 함수를 참조했지만 이전, 만료되었거나 다른 세션에 있었나요?

    임시 함수를 사용하여 CREATE TEMPORARY FUNCTION <routineName> …다시 만들거나 지속형 함수를 사용하여 전환합니다.

  • 개체가 있는 경우와 같이 DROP FUNCTION DDL 문을 실행하시겠습니까?

    IF EXISTS와 같은 DROP FUNCTION <routineName> IF EXISTS 절을 사용하여 문을 실행합니다.

  • 함수가 있다는 것을 알고 계 SHOW FUNCTIONS십니까?

    관리자에게 문의하여 함수에 액세스할 수 있습니다. 스키마 및 카탈로그에 액세스해야 할 수도 있습니다.

오류를 해결하는 방법에 대한 자세한 내용은 함수 해결을 참조 하세요.

예제

> CREATE SCHEMA IF NOT EXISTS myschema;
> CREATE OR REPLACE FUNCTION myschema.myfunc() RETURNS INT RETURN 5;

--
-- The function name has been misspelled
--
> SELECT myschema.myfun();
  [UNRESOLVED_ROUTINE] Cannot resolve function `myschema`.`myfun` on search path [`system`.`builtin`, `system`.`session`, `spark_catalog`.`default`].; line 1 pos 7

-- Use SHOW FUNCTIONS to find the correct nme
> SHOW USER FUNCTIONS IN myschema;
  spark_catalog.myschema.myfunc

-- Correct the spelling
> SELECT myschema.myfunc();
 5

--
-- The qualifier has been misspelled
--
> CREATE SCHEMA IF NOT EXISTS wrongschema;
> SELECT wrongschema.myfunc;
 [UNRESOLVED_ROUTINE] Cannot resolve function `wrongschema`.`myfunc` on search path [`system`.`builtin`, `system`.`session`, `spark_catalog`.`default`].; line 1 pos 7

-- Find candidate schemas
> SHOW SCHEMAS;
  myschema
  wrongschema

-- Verify the function exists in the candidate schema
> SHOW USER FUNCTIONS IN myschema;
  spark_catalog.myschema.myfunc

> SELECT myschema.myfunc();
 5

--
-- Change current schema to find an unqualified function
--
> SELECT myfunc();
  [UNRESOLVED_ROUTINE] Cannot resolve function `myfunc` on search path [`system`.`builtin`, `system`.`session`, `spark_catalog`.`default`].; line 1 pos 7

> USE SCHEMA myschema;

SELECT myfunc();
5