我正在尝试创建一个使用整数参数和dateadd()来创建时间戳的存储过程,该时间戳用于筛选产生where子句的结果。当我试图运行下面的过程时,我得到了“在第3行第2位置的'STATEMENT_ERROR‘类型的完全异常: SQL编译错误:在位置53的无效标识符’X_DAYS_BACK‘处的错误第9行”。如果我将返回行移到create行上方,则过程成功运行,返回字符串包含x_days_back的实际值(例如,最近3天更新的base.ITEM )。
CREATE OR REPLACE PROCEDURE BASE.ITEM_LOAD_test(X_DAYS_BACK INTEGER)
returns string not null
language SQL
as
$$
BEGIN
CREATE OR REPLACE TEMPORARY TABLE BASE.TEMP_DELTA_ITEM (
ID STRING
)
AS
SELECT
SOURCE||KEY AS ID
FROM BASE.SUPPLIER_CATALOG_ITEM
WHERE
CDP__ETL_UPDATE_TIMESTAMP >= DATEADD(Day ,-1*X_DAYS_BACK, CURRENT_DATE);
drop TABLE BASE.TEMP_DELTA_ITEM;
RETURN 'base.ITEM updated for last ' || X_DAYS_BACK || ' days.' ;
END;
$$如何在函数(如dateadd )中访问SQL存储过程的参数?我知道这是一个预览功能,所以这是目前尚未实现的还是?
发布于 2022-03-16 14:52:28
在变量/参数前面抛出冒号:
DATEADD(day, -1*:X_DAYS_BACK, CURRENT_DATE); 他们的文档对于SQL存储过程来说并不令人惊奇,但是提到了这个这里,它声明:
可以在SQL语句中使用变量。(这有时被称为绑定变量。)在变量名前加上冒号。
https://stackoverflow.com/questions/71499088
复制相似问题