雪花存储过程WHILE函数 [英] Snowflake Stored Procedure While Function
本文介绍了雪花存储过程WHILE函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何在雪花中重新创建While函数示例:
WHILE @counter <= @LastRow
BEGIN
SELECT @DateLoad = CONVERT (date, SUNDAY)
FROM [Staging].[Stg_EC_WeeksLoad]
WHERE SEQUENCE = @counter;
EXEC @return_value = [dbo].[pETLFillFact_Demographics_History] @Date = @DateLoad;
SET @counter = @counter + 1;
END
推荐答案
雪花支持expressing stored procedures in JavaScript
,JavaScript
支持multiple looping constructsIncludewhile (condition)
。
将描述的逻辑粗略地翻译为Snowflake过程,如下所示:
CREATE OR REPLACE PROCEDURE looping_process()
RETURNS BOOLEAN
LANGUAGE JAVASCRIPT
AS
$$
// Get 'LastRow' dynamically, or set/pass a constant alternatively
var row_count_query = snowflake.createStatement({ sqlText: "SELECT * FROM SOURCE_TABLE" });
var _resultSet = row_count_query.execute();
var LastRow = row_count_query.getRowCount();
var counter = 0;
while (counter <= LastRow) {
// Get the dynamic date value by applying the counter
var seq_query = `SELECT SUNDAY::DATE AS "DateLoad" FROM "Staging"."Stg_EC_WeeksLoad" WHERE SEQUENCE = $counter`;
var seq_stmt = snowflake.createStatement({ sqlText: seq_query });
var seq_result = seq_stmt.execute(); seq_result.next();
var DateLoad = seq_result.getColumnValue("DateLoad");
// Construct and run the nested procedure call with value found above
var sub_call_query = `CALL "dbo"."pETLFillFact_Demographics_History"($DateLoad)`;
var sub_call_stmt = snowflake.createStatement({ sqlText: sub_call_query });
var sub_call_result = sub_call_stmt.execute(); sub_call_stmt.next();
var return_value = sub_call_result.getColumnValue(1);
// Increment for the next loop
counter += 1;
}
// (… add other omitted logic, to return/error-handle/etc. …)
$$
;
这篇关于雪花存储过程WHILE函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文