У меня есть следующий оператор Execution, который создает таблицу (используя данные из другой процедуры), вставляет значения во временную таблицу, добавляет столбец изображения (поскольку они не могут быть включены в группу), а затем обновляет его на основе критерии из другой временной таблицы (результирующие поля таблицы используются в отчете SSRS, поэтому мне нужно сохранить тип данных IMAGE):
EXEC ('SELECT ' + @COL_TO_GROUP_BY + @COL_ADDITONAL + @sColVals + ' INTO
#RESULTS_TABLE from (' + @SQL_STATEMENT + ') A ' + @WHERE_CLAUSE + ' GROUP BY ' +
@COL_TO_GROUP_BY +
' ALTER TABLE #RESULTS_TABLE
ADD IMAGE_DATA IMAGE
IF EXISTS(SELECT * FROM tempdb.INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME =
''COLUMN_A'' and TABLE_NAME LIKE ''#RESULTS_TABLE%'')
BEGIN
UPDATE #RESULTS_TABLE
SET IMAGE_DATA = FILE_DATA
FROM #RESULTS_TABLE A, #IMAGE_TABLE B
WHERE A.COLUMN_A = B.COLUMN_A
END
SELECT * FROM #RESULTS_TABLE')
Проблема заключается в том, что независимо от того, существует COLUMN_A или нет, столбец для IMAGE_DATA всегда равен NULL. Есть ли другой способ получить данные в столбце IMAGE_DATA? Пожалуйста, помогите!
Примечание: я не буду принимать любые ответы, в которых будет сделан вывод о том, что проблема связана с содержимым в других таблицах, более конкретно из предложения WHERE. Я сделал несколько проверок, чтобы убедиться, что условия могут быть как истинными, так и ложными (совпадающие строки, не совпадающие строки и т. Д.). Так что это исключает условное утверждение. Спасибо.
EDIT:
Я до сих пор не до конца уверен, какова была точная причина этого, но в итоге я создал глобальную временную таблицу и запустил две отдельные процедуры, теперь, похоже, все работает нормально. Я должен был принять ответ, который наиболее близко соответствовал моему собственному решению. Все ответы и комментарии были очень жизнеспособными. Спасибо!