我正在尝试在雪花存储过程中创建视图。我需要变量中的一列。我尝试遵循但出现以下错误,
错误 SQL编译错误: 第 4 行语法错误,位置 36 处出现意外的“(”。 在 Statement.execute,第 14 行位置 33(第 26 行)
错误步骤, '${column1}' AS concat(ID, '${column1}')
create or replace procedure sp_test_js()
returns float not null
language javascript
as
$$
var my_sql_command = "select iff(month(getdate()) <= 3,year(getdate())-1,year(getdate()))";
var statement1 = snowflake.createStatement( {sqlText: my_sql_command} );
var result_set1 = statement1.execute();
while (result_set1.next()) {
var column1 = result_set1.getColumnValue(1);
}
var my_sql_command2 = `create or replace view v_02_test as
(select
ID
,'${column1}' as col1
,'${column1}' AS concat(ID, '${column1}')
from COV_TEST);`
var statement2 = snowflake.createStatement( {sqlText: my_sql_command2} );
var result_set2 = statement2.execute();
return column1;
$$
;
有什么建议吗?
在 Snowflake SQL 工作表中尝试过
预期产出
ID,COL1,ID_2024
1,2024,2024
我认为您面临的问题是由于您将
column1
与 _ID
连接的方式而发生的,因为 Snowflake
SQL
不会将 SQL 命令中的 ${column1} 解释为其标准 SQL 的一部分动态定义列名称的语法。
const dynamicColName = 'ID_' + column1;
const my_sql_command2 = `create or replace view v_02_test as
(select
ID,
'${column1}' as col1,
'${column1}' AS "${dynamicColName}"
from COV_TEST);`;