Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 13.3 LTS ve üzeri
IDENTIFIER yan tümcesi, SQL deyimlerindeki tanımlayıcıların SQL enjeksiyonundan korumalı parametreleştirilmesini sağlar.
Şunun için geçerlidir:
Databricks Runtime 18.0 ve üzeriBağımsız değişkenler yalnızca bir dize sabiti veya bir dize parametre işaretçisi içeriyorsa, tümce çok parçalı bir ad içinde herhangi bir nesne adı veya tanımlayıcı yerine kullanılabilir. Buna şu gibi birleştirilmiş dizeler dahildir:
'myschema' :table 'mycolumn'veya:schema :table :column.Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 13.3 LTS ve üzeritümce, IDENTIFIER veya
'myschema' || :table || 'mycolumn'gibi sabit bir dizeyi:schema || :table || :columnolarak yorumlar:- ilişki (tablo veya görünüm) adı
- işlev adı
- sütun adı
- alan adı
- şema adı
- katalog adı
IDENTIFIER yan tümcesi aşağıdaki deyimlerle sınırlıdır:
- CREATE, ALTER, DROP veya UNDROP deyiminin tablo, görünüm veya işlev konu adı.
- MERGE, , DELETEUPDATE, INSERT, COPY INTO deyimlerinin hedef tablo adı.
- SHOW veya DESCRIBE deyiminin hedefi.
- Şema veya katalog kullanımı
- İşlev çağırma
- Sorguda başvuruda bulunan sütun, tablo veya görünüm. Bu, DDL veya DML deyimine eklenmiş sorguları içerir.
Uyarı
SQL enjeksiyonun sorun olmadığı ve IDENTIFIER yan tümcesinin desteklenmediği durumlarda, bunun yerine EXECUTE IMMEDIATE kullanabilirsiniz.
Örneğin: EXECUTE IMMEDIATE 'CREATE TABLE ' || :tab || '(' || :col || 'INT)';
Sözdizimi
IDENTIFIER ( strLiteral )
IDENTIFIER ( strExpr )
Parametreler
-
strLiteral: Genellikle bir veya birden fazla dize
STRINGve değişmez değer bileşeninden oluşan ve birleştirilen değişmez değer; -
strExpr: Genellikle bir veya daha fazla
STRINGiçeren sabit bir ifade. Databricks Runtime 18.0'dan itibaren bu gösterim kullanım dışı bırakılmıştır.
Örnekler
Scala
// Creation of a table using parameter marker.
spark.sql("CREATE TABLE IDENTIFIER(:mytab)(c1 INT)", args = Map("mytab" -> "tab1"))
// Altering a table with a fixed schema and a parameterized table name.
spark.sql("ALTER TABLE IDENTIFIER('default.' || :mytab) ADD COLUMN c2 INT", args = Map("mytab" -> "tab1"))
// Altering a table with a fixed schema and a parameterized table name in :re[DBR] 18.0 and above.
spark.sql("ALTER TABLE IDENTIFIER('default.' :mytab) ADD COLUMN c2 INT", args = Map("mytab" -> "tab1"))
// Dropping a table with separate schema and table parameters.
spark.sql("DROP TABLE IDENTIFIER(:myschema || '.' || :mytab)", args = Map("myschema" -> "default", "mytab" -> "tab1"))
// Dropping a table with separate schema and table parameters in :re[DBR] 18.0 and above.
spark.sql("DROP TABLE IDENTIFIER(:myschema '.' :mytab)", args = Map("myschema" -> "default", "mytab" -> "tab1"))
// A parameterized reference to a table in a query. The table name is qualified and uses back-ticks.
spark.sql("SELECT * FROM IDENTIFIER(:mytab)", args = Map("mytab" -> "`default`.`tab1`"))
// You cannot qualify the IDENTIFIER clause or use it as a qualifier itself.
spark.sql("SELECT * FROM myschema.IDENTIFIER(:mytab)", args = Map("mytab" -> "`tab1`"))
spark.sql("SELECT * FROM IDENTIFIER(:myschema).mytab", args = Map("myschema" -> "`default`"))
// A parameterized column reference
spark.sql("SELECT IDENTIFIER(:col) FROM VALUES(1) AS T(c1)", args = Map("col" -> "t.c1"))
// Passing in an aggregate function name as a parameter
spark.sql("SELECT IDENTIFIER(:agg)(c1) FROM VALUES(1), (2) AS T(c1)", args = Map("agg" -> "max"))
SQL
-- Using a catalog using a variable.
> DECLARE mycat = 'main';
> USE CATALOG IDENTIFIER(mycat);
-- Creation of a table using variable.
> DECLARE mytab = 'tab1';
> CREATE TABLE IDENTIFIER(mytab)(c1 INT);
-- Altering a table with a fixed schema and a parameterized table name.
> ALTER TABLE IDENTIFIER('default.' || mytab) ADD COLUMN c2 INT;
-- Altering a table with a fixed schema and a parameterized table name in :re[DBR] 18.0 and above.
> ALTER TABLE IDENTIFIER('default.' || mytab) ADD COLUMN c2 INT;
-- Inserting using a parameterized table name. The table name is qualified and uses back-ticks.
> SET VAR mytab = '`default`.`tab1`';
> INSERT INTO IDENTIFIER(mytab) VALUES(1, 2);
-- A parameterized reference to a table in a query.
> SELECT * FROM IDENTIFIER(mytab);
1 2
-- Dropping a table with separate schema and table parameters.
> DECLARE myschema = 'default';
> SET VAR mytab = 'tab1';
> DROP TABLE IDENTIFIER(myschema || '.' || mytab);
-- In :re[DBR] 18.0 and above:
> DROP TABLE IDENTIFIER(myschema '.' mytab);
-- You cannot qualify the IDENTIFIER clause or use it as a qualifier itself prior to :re[DBR] 18.0.
> SELECT * FROM myschema.IDENTIFIER('tab');
Error: PARSE_SYNTAX_ERROR
> SELECT * FROM IDENTIFIER('default').mytab;
Error: PARSE_SYNTAX_ERROR
-- A parameterized column reference
> DECLARE col = 't.c1';
> SELECT IDENTIFIER(col) FROM VALUES(1) AS T(c1);
1
-- Passing in an aggregate function name as a parameter
> DECLARE agg = 'max';
> SELECT IDENTIFIER(agg)(c1) FROM VALUES(1), (2) AS T(c1);
2