使用参数调用雪花存储过程时出现无效标识符错误

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

请帮我找出为什么会出现此错误: SQL 错误 [904] [42000]:第 5 行位置 1 处未捕获类型“STATMENT_ERROR”的异常:SQL 编译错误:位置 12 处错误第 1 行 无效标识符“D” 当执行这个 st.proc 时,如下所示:

CREATE OR REPLACE procedure Myproc(X varchar)
RETURNS VARCHAR
LANGUAGE SQL
EXECUTE AS OWNER
AS 
$$
BEGIN
RETURN X;
END;
$$;

BEGIN
LET D VARCHAR(128) := 'T1'; 
LET L VARCHAR(128) := '';
CALL Myproc(D) INTO L;
RETURN D||'-'||L;
END;

BEGIN
LET D VARCHAR(128) := 'T1'; 
LET L VARCHAR(128) := '';
CALL Myproc(X => D) INTO L;
RETURN D||'-'||L;
END;

谢谢。

我通过 URL 连接在 DBeaver 中运行它。 当我尝试命名参数时出现同样的错误:

如果我用像这样的常量来调用它,它就可以工作:

BEGIN
LET L VARCHAR(128) := '';
CALL Myproc('T1') INTO L;
RETURN L;
END;
stored-procedures snowflake-cloud-data-platform parameter-passing
1个回答
0
投票

谢谢尼克, 这有效: 开始 让 D VARCHAR(128) := 'T1'; 让 L VARCHAR(128) := ''; CALL Myproc(X => :D) INTO L; 返回 D||'-'||L; 结尾; 显然,CALL 被视为 SQL 语句,需要绑定。

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