Literais e variáveis como identificadores com a sintaxe IDENTIFIER()¶
Nas instruções SQL do Snowflake, além de se referir a objetos pelo nome (consulte Requisitos para identificadores), você também pode usar um literal de cadeia de caracteres, variável de sessão, variável de vinculação ou variável de Script Snowflake para se referir a um objeto. Por exemplo, você pode usar uma variável de sessão que está definida para o nome de uma tabela na cláusula FROM de uma instrução SELECT. Para usar um nome de objeto especificado em um literal ou variável, use a sintaxe IDENTIFIER().
Usar IDENTIFIER() para identificar objetos de banco de dados é uma prática recomendada porque pode tornar o código mais reutilizável e ajudar a evitar riscos de injeção SQL.
Sintaxe¶
string_literalCadeia de caracteres que identifica o nome do objeto:
A cadeia de caracteres deve ser delimitada por aspas simples (
'name') ou deve começar com um cifrão ($name).O literal de cadeia de caracteres pode ser um nome de objeto totalmente qualificado (por exemplo,
'db_name.schema_name.object_name'ou$db_name.schema_name.object_name).
session_variableA variável SQL que foi definida para a sessão.
bind_variableUma variável de vinculação, na forma de
?ou:variable, que pode ser usada por clientes/interfaces programáticas que aceitam vinculação (JDBC, ODBC, Python etc.).snowflake_scripting_variableUma variável Script Snowflake que foi definida.
Notas de uso¶
Você pode usar literais e variáveis (sessão ou vinculação) em alguns casos quando precisar identificar um objeto pelo nome (consultas, DML, DDL etc.).
Você pode usar variáveis de vinculação para identificadores de objeto e variáveis de vinculação para valores na mesma consulta.
Em uma cláusula FROM, você pode usar
TABLE( { string_literal | session_variable | bind_variable | snowflake_scripting_variable } )como sinônimo deIDENTIFIER( { string_literal | session_variable | bind_variable | snowflake_scripting_variable } ).Embora o IDENTIFIER() use a sintaxe de uma função, ele não é uma função verdadeira e não é retornado por comandos como SHOW FUNCTIONS.
Exemplos¶
Os exemplos a seguir usam a sintaxe IDENTIFIER().
Como usar a sintaxe IDENTIFIER() com literais de cadeia de caracteres¶
Esses exemplos mostram como fazer referência a um objeto quando um literal de cadeia de caracteres contém o identificador do objeto.
Crie um banco de dados:
Criação de um esquema:
Crie uma tabela usando um nome de tabela que não diferencia maiúsculas de minúsculas, especificado em uma cadeia de caracteres com o nome totalmente qualificado:
Crie uma tabela usando um nome de tabela que diferencia maiúsculas de minúsculas especificado em uma cadeia de caracteres entre aspas duplas:
Mostre as tabelas em um esquema:
Como usar a sintaxe IDENTIFIER() com variáveis de sessão¶
Esses exemplos mostram como usar uma variável de sessão que tem um nome de tabela ou de esquema.
Defina uma variável de sessão para um nome de esquema:
Defina uma variável de sessão para um nome de tabela:
Especifique o esquema para a sessão atual:
Insira os valores em uma tabela:
Consulte uma tabela:
Este exemplo mostra como usar uma variável de sessão com um nome de função.
Crie a função
speed_of_light:Chame a função pelo nome:
Chame a função usando a sintaxe IDENTIFIER():
Como usar a sintaxe IDENTIFIER() com variáveis de vinculação¶
Esses exemplos mostram como usar as variáveis de vinculação para identificar objetos.
Este exemplo mostra como vincular um nome de função em JDBC. A função é denominada speed_of_light.
Os exemplos a seguir mostram uma variedade de instruções SQL que podem usar vinculação, e uma variedade de objetos de banco de dados que podem ser vinculados (incluindo nomes de esquemas e nomes de tabelas):
Como usar a sintaxe IDENTIFIER() com variáveis do Snowflake Scripting¶
Este exemplo mostra como usar uma variável Snowflake Scripting para um nome de tabela em uma instrução SELECT: