簡體   English   中英

在 Snowflake 查詢中調用存儲過程

[英]Call stored procedure in Snowflake query

我定義了一個名為SP_CALC_BUCKET的存儲過程。 我可以這樣稱呼它:

CALL SP_CALC_BUCKET('1972-10-01', 2, 6)

這有效,並返回我期望的結果。 但是,如果我嘗試為從 SELECT 語句返回的每一行調用此存儲過程:


SELECT SP_CALC_BUCKET($1, $2, $3) 
FROM (VALUES ('2022-01-01', 5, 4), ('1972-10-01', 1, 6), ('2008-08-08', 1, 7), 
    ('1999-12-31', 2, 8), ('2000-01-01', 0, 10))

我收到以下錯誤:

未知的用戶定義 function SP_CALC_BUCKET

顯然,語法通知 Snowflake 它應該尋找一個名為SP_CALC_BUCKET的 UDF。 那么,我該如何修改這個查詢以使其有效呢?

你不能在SQL中使用存儲過程。你應該注冊一個function並使用它。

請參考文檔中的以下內容:

存儲過程作為獨立語句調用 function 求值為一個值,並且可以在可以使用一般表達式的上下文中使用(例如 SELECT my_function()...)。

存儲過程不求值,並且不能在可以使用通用表達式的所有上下文中使用。 例如,您不能執行 SELECT my_stored_procedure()....

存儲過程稱為獨立語句。 下面的代碼說明了調用存儲過程和調用 function 之間的區別:

CALL MyStoredProcedure_1(argument_1);

SELECT MyFunction_1(column_1) FROM table1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM