在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
相关产品推荐
相关产品推荐

