请帮我找出为什么会出现此错误: 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;
谢谢尼克, 这有效: 开始 让 D VARCHAR(128) := 'T1'; 让 L VARCHAR(128) := ''; CALL Myproc(X => :D) INTO L; 返回 D||'-'||L; 结尾; 显然,CALL 被视为 SQL 语句,需要绑定。