适用于:
Databricks SQL
运行时 19 及以上
路径是 Azure Databricks 在查询或 DML 语句引用没有目录和模式限定符的表、视图或函数时搜索的有序模式列表。 DDL语句的无限定主语是 current_catalog.current_schema,不是路径查找,因此 CREATE TABLE t 在当前模式中创建 t 。 关于该路径如何应用于DDL语句中的查询和持久视图,请参见 表和视图解析。 关于例行实体,请参见 功能与过程解析。
Syntax
SET PATH = path_element [, ...]
path_element
{ DEFAULT_PATH |
SYSTEM_PATH |
CURRENT_SCHEMA |
PATH |
schema_name }
Parameters
DEFAULT_PATH
一个关键词,可以扩展到 PATH 配置参数,这是新会话继承的工作区默认参数。 如果参数未被覆盖,则展开为
system.session, system.builtin, system.ai, CURRENT_SCHEMA。SYSTEM_PATH
一个扩展到系统提供的模式的关键词:
system.builtin, system.ai。CURRENT_SCHEMA
一个虚拟模式引用,在使用时会解析到当前目录和当前模式(
current_catalog().current_schema())。 该扩展包是在游戏期间及期间所做的USE CATALOGUSE SCHEMA调整之后进行的。PATH
一个关键词,可以扩展到当前会话路径。 用它来延长路径,而不重述内容。
-
需要一个两部分的名称(
catalog.schema)。 允许使用超过两个部分的名字。 一个单部分的名字就提升 了INVALID_SQL_PATH_SCHEMA_REFERENCE。目录和模式在运行
SET PATH时不必存在。 名称解析跳过缺失的条目,继续使用下一个路径元素。
Description
以下规则决定了哪些路径元素 SET PATH 接受,以及最终路径如何影响名称解析。
- 重复路径:不允许重复路径元素。 关键词扩展后,重复的数字会提升 DUPLICATE_SQL_PATH_ENTRY。
-
系统模式:
system.builtinsystem.ai以及内置标量、表格和人工智能功能。system.session存储会话范围的对象,如临时变量、临时函数和临时视图。 通常不建议离开system.builtin小径。 -
省略的模式:不限定名称仅针对路径上的模式结算。 如果省略
CURRENT_SCHEMA,则在当前模式中限定持久对象。 如果你省略system.builtin或system.ai,则对这些函数进行了限定,例如system.builtin.abs。 如果省略system.session,则找不到未限定的临时视图、临时函数和会话变量。 -
视图和例程:持久视图、SQL用户自定义函数和
SQL SECURITY DEFINER过程捕获路径,CREATE并在其正体中针对捕获路径解析未限定名称,而非调用者的会话路径。 捕获SQL SECURITY DEFINER路径中会省略system.session一个过程。 过程SQL SECURITY INVOKER使用呼叫者的实时路径。 参见 “捕获路径”。 -
检查路径:
SET PATH;不会打印路径。 用 上current_path。
Examples
按顺序运行以下语句,因为后续语句会在之前语句设定的路径上构建。
-- Restore the workspace default.
> SET PATH = DEFAULT_PATH;
> SELECT current_path();
system.session,system.builtin,system.ai,main.default
-- Restrict the PATH to only the system-provided schemas.
> SET PATH = SYSTEM_PATH;
> SELECT current_path();
system.builtin,system.ai
-- Append a schema to the existing PATH without restating it.
> SET PATH = PATH, libraries.pgsql;
> SELECT current_path();
system.builtin,system.ai,libraries.pgsql
-- Put the current schema ahead of the system schemas so that user-defined
-- functions shadow built-in functions of the same name.
> SET PATH = CURRENT_SCHEMA, PATH;
> SELECT current_path();
main.default,system.builtin,system.ai,libraries.pgsql
以下语句失败且不会改变路径。
-- A single-part schema name is rejected.
> SET PATH = my_schema;
[INVALID_SQL_PATH_SCHEMA_REFERENCE]
-- A duplicate path element raises an error after expansion.
> SET PATH = SYSTEM_PATH, system.builtin;
[DUPLICATE_SQL_PATH_ENTRY]