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

BigQuery存储过程报错:无法将v_product_code转为STRING类型求助

BigQuery存储过程报错原因分析

你编写并调用的存储过程触发了错误:

ERROR Query error: Cannot coerce expression v_product_code to type STRING at [virendra101987.Practise.sp_test:7:23]

对应的存储过程代码如下:

create or replace procedure Practise.sp_test()
OPTIONS(strict_mode=false)
BEGIN
DECLARE v_product_code int64;
DECLARE v_price int64;

    set v_product_code = (SELECT product_code FROM `virendra101987.Practise.product` where v_product_code =01);
    set v_price = (SELECT price FROM `virendra101987.Practise.product` where v_product_code =01);
    EXECUTE IMMEDIATE v_product_code;
    EXECUTE IMMEDIATE v_price;

    insert into `Practise.sales1`(order_date,product_code,quantity_order,sales_price)
    values (current_date(),v_product_code,1,v_price);

END


CALL `virendra101987.Practise.sp_test`();

错误原因

  1. EXECUTE IMMEDIATE参数类型不匹配:EXECUTE IMMEDIATE的作用是执行动态SQL语句,它要求传入的必须是字符串类型的合法SQL语句。但你这里传入的是int64类型的变量v_product_code和v_price,BigQuery无法将整数强制转换为可执行的SQL字符串,直接触发类型转换错误。
  2. 冗余的EXECUTE IMMEDIATE调用:这两行执行语句完全没有意义,v_product_code和v_price是存储查询结果的变量,不是SQL语句,不需要用EXECUTE IMMEDIATE执行,直接删除即可。
  3. 查询条件存在逻辑问题:where v_product_code =01里的v_product_code是你刚声明的变量,此时还未初始化,值为NULL,所以这个查询会返回空结果,后续插入的v_product_code和v_price都会是NULL,应该改成where product_code = 1(如果你的筛选条件是产品编码为1的话)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 10:48:17