Ваш первый запрос должен go примерно так:
select CONCAT('foo_', FORMAT_TIMESTAMP('%Y%m%d', CURRENT_TIMESTAMP(), 'Asia/Tokyo'))
Для создания временной функции используйте следующий код:
create temp function getTableName() as
((select CONCAT('foo_', FORMAT_TIMESTAMP('%Y%m%d', CURRENT_TIMESTAMP(), 'Asia/Tokyo'))
));
select getTableName()
Ошибка "CREATE TEMPORARY FUNCTION инструкции должны быть с последующим реальным запросом. " потому что, как только временные функции определены, вы должны использовать фактический запрос, чтобы использовать эту функцию, и тогда валидность функции исчезнет. Чтобы определить постоянные пользовательские функции и использовать их в нескольких запросах, пожалуйста, go через ссылку для определения постоянных функций. Вы можете повторно использовать постоянные пользовательские функции в нескольких запросах, тогда как вы можете использовать временные пользовательские функции только в одном запросе.