我正在尝试调用 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;
';
为了在 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