雪花存储过程传递参数

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

我正在尝试调用 Snowflake 中的存储过程并收到以下错误消息

无效标识符“ID_1PAR”(第 2 行)

我创建了以下存储过程,并期望调用 SP 中的参数将被插入到表中

CALL SP_BRANDS(123, '重要提示', '新产品', 150, 75);

CREATE OR REPLACE PROCEDURE PUBLIC.SP_BRANDS(ID_1PAR NUMBER(38,0), NOTESPAR VARCHAR(50), PRODUCTPAR VARCHAR(50), KPI1PAR NUMBER(38,0), KPI2PAR NUMBER(38,0))
RETURNS VARCHAR(50)
LANGUAGE SQL
EXECUTE AS OWNER
AS '
BEGIN
    INSERT INTO BRANDS ("ID_1", "NOTES", "PRODUCT", "KPI1", "KPI2")
    VALUES (ID_1PAR, NOTESPAR, PRODUCTPAR, KPI1PAR, KPI2PAR);  

    RETURN ''Insert Successful'';
END;
';
stored-procedures snowflake-cloud-data-platform
1个回答
0
投票

为了在 SQL 脚本中绑定变量值,您需要使用冒号 (:) 后跟变量名称。您更新的存储过程应如下所示。

CREATE OR REPLACE PROCEDURE PUBLIC.SP_BRANDS(ID_1PAR NUMBER(38,0), NOTESPAR VARCHAR(50), PRODUCTPAR VARCHAR(50),
KPI1PAR NUMBER(38,0), KPI2PAR NUMBER(38,0))
RETURNS VARCHAR(50)
LANGUAGE SQL
EXECUTE AS OWNER
AS '
BEGIN
    INSERT INTO BRANDS ("ID_1", "NOTES", "PRODUCT", "KPI1", "KPI2")
    VALUES (:ID_1PAR, :NOTESPAR, :PRODUCTPAR, :KPI1PAR, :KPI2PAR);  

    RETURN ''Insert Successful'';
END;
';

请参阅此处的 Snowflake 文档 - https://docs.snowflake.com/en/developer-guide/snowflake-scripting/variables#using-a-variable-in-a-sql-statement-binding

© www.soinside.com 2019 - 2024. All rights reserved.