Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det går inte att lösa funktionen <routineName> på sökvägen <searchPath>.
Parametrar
- routineName: Namnet på funktionen som inte kan matchas.
-
searchPath: Den ordnade listan över scheman som genomsöktes om
routineNameinte schemakvalificerades.
Förklaring
Beständiga funktioner består av tre namndelar: <catalog>.<schema>.<relation>.
Om du inte anger alla tre delarna av namnet slutförs det implicit med den aktuella katalogen eller det aktuella schemat.
Detta liknar hur arbetskatalogen i filsystemet påverkar vilka filer du kan se, såvida du inte helt anger sökvägen.
Tillfälliga funktioner finns bara i sessionen eller frågan och får aldrig kvalificeras.
Den vanligaste orsaken till att du inte hittar en funktion är:
- Funktionen finns inte.
- Funktionsnamnet är felstavat.
- Den användardefinierade funktionen finns i ett annat schema.
- Den användardefinierade funktionen finns inte i det aktuella schemat.
- Du kan inte visa den användardefinierade funktionen eftersom du inte har åtkomst.
- Den inbyggda funktion som du försöker anropa är inte tillgänglig i den här versionen av Azure Databricks.
Minskning av påverkan
Minska fel genom att granska följande.
Stavade du funktionsnamnet felaktigt?
Använd
SHOW FUNCTIONS IN \<schema\>för att verifiera rätt funktionsnamn.Finns funktionen i ett annat schema?
Om funktionen finns i en katalog i Unity Catalog kör du följande fråga:
SELECT routine_schema FROM information_schema.routines WHERE routine_name = '<routinename>'Då visas schemat i den aktuella katalogen där funktionen finns.
Om funktionen finns utanför Unity Catalog använder du
SHOW SCHEMASför att hitta kandidatscheman. AnvändSHOW FUNCTIONS IN \<schema\>för att undersöka funktionen.Har du inte kvalificerat namnet fullständigt och resultatet av
VALUES current_schema()matchar inte funktionens kvalificerade namn?Kvalificera
functionNamemed dess schema och katalog, eller körUSE SCHEMAför att bestämma det implicita schemat.Refererade du till en tillfällig funktion, men den var i en tidigare, förfallen eller annan session?
Återskapa den tillfälliga funktionen med hjälp av
CREATE TEMPORARY FUNCTION \<routineName\> …eller växla till med hjälp av en bevarad funktion.Vill du utfärda en DDL-instruktion, till exempel
DROP FUNCTIONom objektet finns?Utfärda uttalandet med hjälp av klausulen
IF EXISTS, till exempel:DROP FUNCTION \<routineName\> IF EXISTS.Vet du att funktionen finns, men du kan inte se den i
SHOW FUNCTIONS?Kontakta administratören för att få åtkomst till funktionen. Du kan också behöva åtkomst till schemat och katalogen.
Mer information om hur du löser felet finns i Funktionsmatchning.
Exempel
> 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