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

如何将多行列查询结果合并到变量中并实现批量打印?

解决方案:处理多行多列结果并逐行打印

针对你想一次性处理fnBorrowerBooks返回的多行多列数据,并且能逐行打印合并内容的需求,这里有两种实用的SQL Server实现方法:

方法1:使用游标逐行处理

如果需要对每一行数据做单独的逻辑处理,游标是最直观的选择,能帮你逐行读取结果并打印:

-- 声明变量存储每行的字段值
DECLARE @title NVARCHAR(255), @dateBorrowed DATE, @dateReturned DATE

-- 声明游标,指向函数返回的结果集
DECLARE book_cursor CURSOR FOR
SELECT title, DateBorrowed, DateReturned
FROM fnBorrowerBooks(@name, 'G3')

-- 打开游标并循环读取
OPEN book_cursor
FETCH NEXT FROM book_cursor INTO @title, @dateBorrowed, @dateReturned

WHILE @@FETCH_STATUS = 0
BEGIN
    -- 打印当前行的合并内容,格式可自定义
    PRINT CONCAT('书名:', @title, ' | 借阅日期:', @dateBorrowed, ' | 归还日期:', @dateReturned, ' ble ble ble')
    
    -- 读取下一行
    FETCH NEXT FROM book_cursor INTO @title, @dateBorrowed, @dateReturned
END

-- 关闭并释放游标
CLOSE book_cursor
DEALLOCATE book_cursor

方法2:使用STRING_AGG合并为带换行的字符串(SQL Server 2017+)

如果你的SQL Server版本是2017或更高,可以用STRING_AGG函数把所有行合并成一个包含换行符的字符串,然后一次性打印,代码更简洁:

DECLARE @result NVARCHAR(MAX)

-- 用STRING_AGG合并每行内容,用CHAR(13)+CHAR(10)作为换行符
SELECT @result = STRING_AGG(
    CONCAT('书名:', title, ' | 借阅日期:', DateBorrowed, ' | 归还日期:', DateReturned, ' ble ble ble'),
    CHAR(13) + CHAR(10)
)
FROM fnBorrowerBooks(@name, 'G3')

-- 打印合并后的结果,会自动按行显示
PRINT @result

说明

  • 两种方法都替代了你原来的三个SET语句,直接从函数结果集中获取所有需要的字段
  • 游标方法兼容性更好,适合所有SQL Server版本;STRING_AGG方法代码更简洁,但需要版本支持
  • 你可以根据实际需求调整CONCAT里的内容格式,比如增减字段、修改分隔符等

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:23:32