Имя динамической таблицы распознается как имя столбца - PullRequest
0 голосов
/ 21 мая 2018

Есть ли причина, по которой динамическая схема и имя таблицы в приведенном ниже сценарии распознаются как имя столбца?Если у меня жесткий код в схеме и именах таблиц вне динамического скрипта, функция не выполняет никаких проблем.

Ошибка = сообщение 207, уровень 16, состояние 1, строка 38 Неверное имя столбца '55_Dataset'.Сообщение 207, уровень 16, состояние 1, строка 38 Неверное имя столбца «EPAPRIORITY».повторяется для каждой итерации

Пример таблицы введите описание изображения здесь

DECLARE @Counter INT;
DECLARE @DATASET nvarchar(50);
DECLARE @STATE nvarchar(50);
DECLARE @sql nvarchar(max);
SET @Counter = 1;

WHILE @Counter <= 10

BEGIN

SET @DATASET = (Select [DATASET] FROM [xxx].[dbo].[EPA_Geocoding_Progress] Where [INT] = @Counter)
SET @STATE = (Select [STATE] FROM [xxx].[dbo].[EPA_Geocoding_Progress] Where [INT] = @Counter)
SET @sql = '
UPDATE [xxx].[dbo].[EPA_Geocoding_Progress] 
Set [Geocoded] = (Select COUNT (*) FROM [xxx].[' + @STATE + '].[' + @DATASET + '])
Where [STATE] =  [' + @STATE + '] AND [DATASET] = [' + @DATASET + ']'
exec sp_executesql @sql;

SET @Counter = @Counter + 1;


END

Ответы [ 2 ]

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

Если вы напишете код таким образом:

declare @sql varchar(max)
declare @STATE varchar(50)
declare @DATASET varchar(50)
set @STATE = 'dbo'
set @DATASET = 'test'
Set @sql = '
UPDATE [dbo].[EPA_Geocoding_Progress] 
Set [Geocoded] = (Select COUNT (*) FROM [' + @STATE + '].[' + @DATASET + '])'
   print @sql;

вы увидите, что не так.

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

Версия сервера SQL

кажется, что нет проблем

проверка ; перед установкой

я пробую:

CREATE TABLE EPA_Geocoding_Progress(
    Geocoded  int
);

CREATE TABLE TEST(
    ID  int
);

Declare @sql nvarchar(max) = ''
,@STATE nvarchar(max) = 'dbo'
,@DATASET nvarchar(max) = 'test' 
Set @sql = '
UPDATE [dbo].[EPA_Geocoding_Progress] 
Set [Geocoded] = (Select COUNT (*) FROM [' + @STATE + '].[' + @DATASET + '])'
select @sql
exec sp_executesql @sql; -- Run Success

DEMO SQL Fiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...