永动bug制造机 2023-02-20 09:33 采纳率: 0%
浏览 13

sp_executesql执行sql变量的问题

存储过程里需要查询并记录一条数据脚本如下

declare @totalSql nvarchar(max)
declare @sum_amount decimal
declare @sum_count decimal


set @totalSql='
select @sum_amount=isnull(sum(t2.detail_amount),0),@sum_count=isnull(sum(t2.number),0)
from merchant_purchase_order t1
inner join merchant_purchase_order_detail t2 on t2.order_id=t1.id
inner join shopping_goods t3 on t3.id=t2.goods_id and t3.goods_kind=1
where order_state between 1 and 10 '

exec sp_executesql  @totalSql  

最后执行抛出异常:必须声明标量变量 "@sum_amount"。

请教下是有其他方法,还是这个方法的写法不对

  • 写回答

4条回答 默认 最新

  • 不咕鸟会咕咕 2023-02-20 09:42
    关注

    您需要在 sp_executesql 中指定参数,以便将查询结果存储到变量中。您可以通过在 SQL 语句中使用 OUTPUT 关键字和 sp_executesql 的 OUTPUT 参数来实现。

    以下是您的示例代码的修改版本:

    DECLARE @totalSql NVARCHAR(MAX)
    DECLARE @sum_amount DECIMAL
    DECLARE @sum_count DECIMAL
    
    SET @totalSql = N'
    SELECT @sum_amount = ISNULL(SUM(t2.detail_amount), 0),
           @sum_count = ISNULL(SUM(t2.number), 0)
    FROM merchant_purchase_order t1
    INNER JOIN merchant_purchase_order_detail t2 ON t2.order_id = t1.id
    INNER JOIN shopping_goods t3 ON t3.id = t2.goods_id AND t3.goods_kind = 1
    WHERE order_state BETWEEN 1 AND 10
    '
    
    EXEC sp_executesql @totalSql, N'@sum_amount DECIMAL OUTPUT, @sum_count DECIMAL OUTPUT', @sum_amount OUTPUT, @sum_count OUTPUT
    
    SELECT @sum_amount AS 'sum_amount', @sum_count AS 'sum_count'
    

    在上面的代码中,我们使用 N'@sum_amount DECIMAL OUTPUT, @sum_count DECIMAL OUTPUT' 指定了输入参数类型,并且在执行 sp_executesql 时将 @sum_amount @sum_count 参数设置为 OUTPUT 模式。

    请注意,您需要将 @sum_amount @sum_count 参数的类型与查询结果的类型匹配。另外,您还需要在最后使用 SELECT 语句来显示这些变量的值。

    希望这可以解决您的问题!

    评论

报告相同问题?

问题事件

  • 创建了问题 2月20日

悬赏问题

  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法