You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Snowflake中创建存储过程后执行报错:无效标识符'SALES_ID'

解决Snowflake存储过程调用时的"invalid identifier 'SALES_ID'"错误

错误原因是Snowflake SQL存储过程中,直接使用参数名会被解析为表列名,而非存储过程的输入参数。在你的INSERT语句里,sales_id被误认为是sales_data表的列,但VALUES子句需要的是具体值,因此触发标识符无效错误。

修复方法是在所有存储过程参数前添加冒号:,明确指定引用的是存储过程的输入参数:

修改后的存储过程代码:

CREATE OR REPLACE PROCEDURE insert_sales_record
    (sales_id INT,
     transaction_date DATE,
     transaction_time TIME,
     daily_id INT,
     first_name STRING,
     last_name STRING,
     email STRING,
     vendor_type STRING,
     cost DECIMAL(10, 2),
     cost_code STRING,
     cost_description STRING,
     sales_rep STRING,
     sale_state STRING,
     state_tax DECIMAL(5, 2))
RETURNS STRING
LANGUAGE SQL
AS
$$
BEGIN
    INSERT INTO sales_data VALUES (
        :sales_id,
        :transaction_date,
        :transaction_time,
        :daily_id,
        :first_name,
        :last_name,
        :email,
        :vendor_type,
        :cost,
        :cost_code,
        :cost_description,
        :sales_rep,
        :sale_state,
        :state_tax
    );

    RETURN 'Record inserted successfully';
END;
$$;

调用语句无需修改,执行修改后的存储过程后,再运行以下命令即可正常插入数据:

CALL insert_sales_record(3, '2024-01-03', '11:00:00', 103, 'Mark', 'Smith', 'mark.smith@example.com', 'Retail', 200.00, 'C003', 'Home Goods', 'Charlie Johnson', 'NY', 10.00);

额外注意:你的sales_summary视图使用sd.vendor_type = vi.vendor_name作为关联条件,需要确保sales_data的vendor_type值和vendor_info的vendor_name值完全匹配,否则视图将返回空数据或不完整的关联结果。

内容的提问来源于stack exchange,提问作者saicharan yvvs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 23:42:33