#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);
Это сработает.