无法在雪花存储过程的创建视图中将变量设置为列别名

问题描述 投票:0回答:1

我正在尝试在雪花存储过程中创建视图。我需要变量中的一列。我尝试遵循但出现以下错误,

错误 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

javascript stored-procedures snowflake-cloud-data-platform create-view column-alias
1个回答
0
投票

我认为您面临的问题是由于您将

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);`;
© www.soinside.com 2019 - 2024. All rights reserved.