表字面量

表字面量用于将表的名称或占位符的值(而不是表名称)传递给查询。表字面量出现在 SQL 语句的 FROM 子句中,由表名称或代替表名称的 SQL 变量或 API 绑定变量组成。

通俗地讲,使用 TABLE(...) 构造表字面量时,可以将 TABLE() 视为 表函数。从语法上讲,TABLE() 就像一个函数。从语义上讲,TABLE() 的行为类似于表函数,因为它:

  • 接受标量值作为输入。

  • 返回一组 0 或更多行。

  • 可以用作 FROM 子句中的行源。

本主题内容:

语法

TABLE( { <string_literal> | <session_variable> | <bind_variable> } )
Copy
string_literal

包含表 标识符 的字符串字面量:

  • 标识符可以完全限定为以下形式:

    db_name.schema_name.table_name
    schema_name.table_name
  • 区分大小写或包含空格和特殊字符的单个对象标识符支持双引号。

  • 整个标识符字符串必须用单引号或 $$ 括起来。例如:

    'mytable'$$mytable$$
    'mydb.myschema.mytable'$$mydb.myschema.mytable$$
    '"DB 1"."Schema 1".mytable'$$"DB 1"."Schema 1".mytable$$
session_variable

已为会话设置的 SQL 变量

bind_variable

绑定变量,标准形式为 ?:name,用于支持绑定(Java、Python 等)的 APIs。

使用说明

  • 表字面量仅在 FROM 子句中受支持。

  • 在支持 TABLE() 的情况下,它等同于使用 IDENTIFIER()

  • 当使用绑定变量准备语句时,表元数据在准备语句后不可用。

示例

使用表字面量查询表 mytable (请注意,以下两个示例在语法上是等效的):

SELECT * FROM TABLE('mytable');

SELECT * FROM TABLE($$mytable$$);
Copy

使用表字面量在架构 myschema 和数据库 mydb 中查询表 mytable (请注意,以下两个示例在语法上是等效的):

SELECT * FROM TABLE('mydb."myschema"."mytable"');

SELECT * FROM TABLE($$mydb."myschema"."mytable"$$);
Copy

设置引用表名称的会话变量,然后使用作为表字面量传递的变量来查询表:

SET myvar = 'mytable';

SELECT * FROM TABLE($myvar);
Copy

准备一个具有表示表的绑定的语句(请注意,以下两个示例在语法上是等效的):

SELECT * FROM TABLE(?);

SELECT * FROM TABLE(:binding);
Copy
语言: 中文