gpt4 book ai didi

stored-procedures - 使用 Snowflake Scripting 在存储过程中使用变量作为表/标识符名称

转载 作者:行者123 更新时间:2023-12-05 04:34:54 24 4
gpt4 key购买 nike

我正在使用 Snowflake Scripting 创建存储过程我希望输出是一个用日期戳创建的表。在 SQL 中我会这样写

set creation_date = to_varchar(current_date(), 'YYYYMMDD');

set output_tbl_name = concat('my_database.my_schema.', 'output_', $creation_date);

create or replace table identifier($output_tbl_name) (col1 varchar, col2 varchar);

这将创建一个名为 output_20220216 的表。

但是,如果我在存储过程中使用 Snowflake Scripting,则无法识别 set 函数。我尝试使用

let creation_date varchar := to_varchar(current_date(), 'YYYYMMDD');

let output_tbl_name varchar := concat('my_database.my_schema.', 'output_', $creation_date);

create or replace table identifier($output_tbl_name) (col1 varchar, col2 varchar);

但是由于 $ 符号,我得到了一个错误。如果我使用 create or replace table output_tbl_name,它只会创建一个名为 output_tbl_name 的表。

如何在 Snowflake 脚本中使用标识符?

最佳答案

使用 Snowflake 脚本和 EXECUTE IMMEDIATE 连接查询:

DECLARE
creation_date STRING := to_varchar(current_date(), 'YYYYMMDD');
output_tbl_name STRING := concat('my_database.my_schema.', 'output_', :creation_date);
QUERY STRING;
BEGIN

QUERY:= REPLACE(
'create or replace table <output_tbl_name>(col1 varchar, col2 varchar);'
,'<output_tbl_name>', :output_tbl_name); ;

EXECUTE IMMEDIATE :QUERY;

RETURN :QUERY;
END;

输出(经典用户界面):

enter image description here

SELECT * FROM my_database.my_schema.output_20220217;
-- COL1 COL2

关于stored-procedures - 使用 Snowflake Scripting 在存储过程中使用变量作为表/标识符名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71149526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com