使用表值参数的Stored Procedure报错:未声明标量变量@data求解决方案
问题解答
你遇到的错误是因为表类型参数不能直接通过@data.y这种方式引用列,表类型参数本质是一个表对象,需要将它当作普通表来处理,通过FROM子句访问其数据。
修正后的存储过程代码:
create procedure sp_evaluate_y_yhat @data y_yhat_tabletype readonly as begin select sum(y) as sum_y, sum(yhat) as sum_yhat from @data end
关键说明
- 表类型参数在存储过程中是只读表,必须通过
FROM子句来查询它的列,不能像标量变量那样直接用@参数.列名的格式。 - 后续扩展复杂逻辑(比如过滤、关联其他表)时,都可以基于
FROM @data来编写SQL语句,和操作普通表的语法一致。
内容的提问来源于stack exchange,提问作者XiB
相关产品推荐
相关产品推荐

