У меня есть запрос с оператором select в цикле, и в то же время я хочу вставить переменную varchar
и выбранное значение во временную таблицу, но я получаю сообщение об ошибке:
Сообщение 207, Уровень 16, Состояние 1, Строка 2
Недопустимое имя столбца 'SP419001_SID'
Это SP419001_SID
- значение, содержащееся в переменной varchar
@dbName
.
Это мой запрос:
CREATE TABLE #tempCounter
(
dbName1 varchar(max),
counterNumber1 int
)
DECLARE
@counter INT = 1,
@max INT = 0,
@dbName VARCHAR(100),
@count INT = 0,
@SQLTEXT VARCHAR(MAX),
@counterNumber VARCHAR(10)
SELECT @max = COUNT(id) FROM #tempPnamePadd
WHILE @counter <= @max
BEGIN
SET @dbName='';
-- Do whatever you want with each row in your table variable filtering by the Id column
SELECT @dbName = name
FROM #tempPnamePadd
WHERE Id = @counter
PRINT @dbName
SET @SQLTEXT =
--SELECT distinct PN.NAME_FORMAT_CODE, NAME_BUSINESS, INDIVIDUAL_FIRST, A.ADDRESS_ID, A.ADDR_LINE_1, A.ADDR_LINE_2, A.ADDR_LINE_3, A.CITY, A.STATE
'DECLARE @dbn VARCHAR(200)
SET @dbn ='+ @dbName +';
INSERT INTO #tempCounter
(dbname1, counternumber1)
SELECT @dbn ,
(SELECT count(*)
FROM '+ @dbName +'.dbo.PRELA PR
INNER JOIN '+ @dbName +'.dbo.PNAME PN
ON PR.NAME_ID = PN.NAME_ID
INNER JOIN '+ @dbName +'.dbo.PNALK NK
ON PN.NAME_ID = NK.NAME_ID
INNER JOIN '+ @dbName +'.dbo.PADDR A
ON NK.ADDRESS_ID = A.ADDRESS_ID
WHERE (NAME_FORMAT_CODE=''B'' and NAME_BUSINESS like ''%BN'') OR
(NAME_FORMAT_CODE <> ''B'' and INDIVIDUAL_FIRST = ''John'') OR
(ADDR_LINE_1=''WELLS STREET'' AND CITY=''HOLLYWOOD'' AND STATE=''IA'')
)
'
--PRINT @SQLTEXT
EXEC (@SQLTEXT)
SET @counter = @counter + 1
END