я получаю имя таблицы в верхнем регистре, вызывающее переменную

#sql #snowflake-cloud-data-platform #uppercase #mysql-variables

Вопрос:

Я установил имя переменной для таблицы в нижнем регистре:

 Set TGT_TABLE = 'tab_name';
 

однако, когда я пытаюсь назвать это:

 select * from table($TGT_TABLE);
 

Я получаю сообщение об ошибке:

 SQL compilation error: Object 'TAB_NAME' does not exist or not authorized.
 

Почему он вызывает заглавную версию имени моей таблицы
Также я проверил в разделе «показать переменные», что моя переменная действительно строчная

Комментарии:

1. Таблица создана как имя вкладки или ИМЯ ВКЛАДКИ?

2. в нижнем регистре : имя вкладки

3. Я бы проверил Set TGT_TABLE = '"tab_name"' , чтобы сохранить оболочку. (Или, возможно, обратные тики вместо двойных кавычек.)

4. это решает проблему, которую я пытался решить : Установите TGT_TABLE = «имя вкладки»; но я получил ошибку : не работает / недопустимый идентификатор, большое спасибо 🙂

5. Это для Snowflake или MySQL? У вас есть обе метки.

Ответ №1:

чтобы использовать идентификаторы в нижнем регистре, они должны быть заключены в двойные кавычки. чтобы присвоить его переменной, это должно быть дополнительно заключено в одинарные кавычки.

ответ @jarlh правильный, обратите внимание на одинарные кавычки, окружающие двойные кавычки.

 Set TGT_TABLE = '"tab_name"';
select * from table($TGT_TABLE);
 

если вы сомневаетесь, скопируйте/ вставьте

Ответ №2:

Вы можете Написать Свой Код Следующим Образом :

 declare @TGT_TABLE nvarchar(50),@query nvarchar(50)

Set @TGT_TABLE = 'name of your table';

SET @query = 'SELECT * FROM '   @TGT_TABLE;
     
EXEC(@query);
 

Это сработает.