所以我目前有这个
SET @title = (SELECT title FROM fnBorrowerBooks(@name, 'G3'))
SET @dateBorrowed = (SELECT DateBorrowed FROM fnBorrowerBooks(@name, 'G3'))
SET @dateReturned = (SELECT DateReturned FROM fnBorrowerBooks(@name, 'G3'))
但基本上我需要的是类似的东西
SET @variable 1 = (SELECT * FROM fnBorrowerBooks(@name, @Genre)
但是这会返回 3 列并且可以返回多个行,这显然不起作用,因为您无法分配多个值,我需要打印我得到多少结果,所以如果我得到 3 个不同的结果,我需要将所有 3 个打印为 1 个字符串,如果这有意义,那么
PRINT CONCAT(@variable1,'ble ble ble'(应该根据有多少结果返回我多行,我无法找到如何实现这一目标的方法。
如果您只需要标题,则可以在查询中连接:
DECLARE @Title NVARCHAR(3000)
SELECT
@Title = COALESCE(@Title + ', ', '') + title
FROM
dbo.fnBorrowerBooks(@name, @genre)
SELECT @title
您可以尝试使用临时表和循环,如下所示:
CREATE TABLE #t
(tKey int IDENTITY(1,1) PRIMARY KEY,
Column1 varchar(100),
Column2 varchar(100),
...)
INSERT INTO #t
SELECT * --the columns you select here need to be in the column list above
FROM fnBorrowerBooks(@name, @Genre)
DECLARE @Count int
DECLARE @MyString varchar(max)
SET @Count = 1
SET @MyString = ''
WHILE @Count <= (SELECT MAX(Key) FROM #t)
BEGIN
SET @MyString += (SELECT Column1 + ', ' + Column2 + ... FROM #t WHERE tKey = @Count)
SET @Count += 1
END
PRINT(@MyString)