Как я могу объединить этот набор результатов запроса в переменную, чтобы распечатать позже? - PullRequest
0 голосов
/ 22 мая 2018

поэтому у меня есть это в настоящее время

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') должен вернуть мне несколько строк в зависимости от того, сколько результатов, и я не смог найти способ, как этого добиться.

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Если вам нужны только заголовки, вы можете объединить запрос:

DECLARE @Title NVARCHAR(3000) 

SELECT 
    @Title = COALESCE(@Title + ', ', '') + title
FROM 
    dbo.fnBorrowerBooks(@name, @genre)


SELECT @title
0 голосов
/ 22 мая 2018

Вы можете попробовать использовать временную таблицу и цикл, например:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...