Я пытаюсь объединить результат запроса для каждого человека в переменную.
Курсор Извлечь имя столбца из таблицы #temp и извлечь данные из PersonTable
Например: для PID = 1 (FName: John LName: Hill HomeCountry = US HomeState = CH)
123JohnHillUSCH
Person Table:
pid FName LName HomeCity HomeState
1 Pascal E New York NY
2 Steve F New York NY
CREATE table #Temp
([Id] int, [ColumnName] varchar(13))
;
INSERT INTO #Temp
([Id],[ColumnName])
VALUES
(1, 'EID'),
(2, 'FName'),
(3, 'LName'),
(4, 'HomeCountry'),
(5, 'HomeState')
;
SELECT * FROM #Temp
SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
GO
ALTER PROCEDURE [dbo].[up_Conv_GenerateResultsFromMappingTable]
@Param1 VARCHAR(30)
AS
SET NOCOUNT ON
DECLARE @ColName VARCHAR(100);
DECLARE @Result VARCHAR(MAX)
DECLARE @Cur as CURSOR;
SET @Cur = CURSOR FOR
SELECT columnName FROM #Temp
OPEN @Cur;
FETCH NEXT FROM @Cur INTO @ColName;
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @query nvarchar(MAX)
PRINT @Param1;
SET @Query='SELECT '+@ColName+' FROM dbo.PERSON where PID='+@Param1+''
PRINT @Query
EXECUTE sp_executesql @Query
, N'@Param1 varchar(30)',
@Param1
FETCH NEXT FROM @Cur INTO @ColName;
END
CLOSE @Cur;
DEALLOCATE @Cur;
Ожидаемый результат
1,1PascalENewYorkNY
2,2SteveFNewYorkNY