K歌之王章鱼哥 2017-12-28 07:14 采纳率: 0%
浏览 1048
已结题

sqlserver,定义一个变量,但返回NULL,'SET @item_id' 导致出错,但不知为何

DECLARE @user_id bigint
DECLARE @item_ids varchar(1000)
SET @user_id = 7
SET @item_ids = N'536563,562379'
DECLARE @i INT;
DECLARE @count INT;
DECLARE @price BIGINT;
DECLARE @total_price BIGINT;
DECLARE @temp_price BIGINT;
SET @total_price = 1;
SET @i = 0;
SET @count = (SELECT COUNT(VALUE) FROM string_split(@item_ids,',') );
WHILE (@i < @count)
BEGIN
DECLARE @item_id BIGINT;
SET @item_id = CAST(
(
SELECT ID FROM
(
SELECT CAST(VALUE AS BIGINT) AS ID,ROW_NUMBER() OVER(ORDER BY VALUE) AS RowNum
FROM string_split(@item_ids,',')) AS Idx
WHERE RowNum = @i
)
AS BIGINT
) ;
SET @price = (SELECT price FROM tb_item WHERE id = @item_id)
SET @total_price = @total_price + @price
SET @i = @i + 1
END
SELECT @total_price AS TTP

  • 写回答

3条回答

  • qq_34363742 2017-12-28 07:30
    关注

    一、SELECT可以在一条语句里对多个变量同时赋值,而SET只能一次对一个变量赋值

    二、表达式返回多个值时,用SET将会出错,而SELECT将取最后一个值

    三、表达式无返回值时,用SET将置变量值为NULL,用SELECT变量将保持原值

    四、使用标量子查询时,如果无返回值,SET和SELECT一样,都将置为NULL

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件