Итак, у меня проблема с преобразованием строк. Я попробовал все под солнцем. Моя цель - включить значения из цикла в таблицу. Однако я могу получить значение поля, но не могу получить значение имени таблицы, потому что sql думает, что я вызываю таблицу, а не строку. Я пробовал кастинг, преобразовывая все. Вот пример кода:
DECLARE @C varchar(65)
DECLARE @FieldName varchar(50)
SET @FieldName = 'ProjectID'
SELECT @C = MIN(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'Base Table'
CREATE TABLE #temp_t (
[field] varchar(100),
[tblname] varchar(100)
)
WHILE @C is not null
BEGIN
DECLARE @qbExists int
DECLARE @tblname varchar(100)
SET @tblname = CONVERT(varchar(100), @C)
SELECT @qbExists = COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @C AND COLUMN_NAME = @FieldName
IF @qbExists = 1 AND
@C <> 'TimeExpenseUnionQuery' AND
@C <> 'TimeExpense' AND
@C <> 'BC_BA' AND
@C <> 'BC_BE' AND
@C <> 'BC_EL' AND
@C <> 'BC_TE'
BEGIN
EXEC('
SELECT ' + @FieldName + ', ' + @C + ' FROM ' + @tblName +'
')
END
SELECT @C = MIN( TABLE_NAME ) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME > @C
END
SELECT * FROM #temp_t
DROP TABLE #temp_t
Дочерняя часть проблемы находится в SELECT '+ @FieldName +', '+ @C +' FROM '+ @tblName.
Теперь, если я не использую @C, он работает нормально. Если я пытаюсь конвертировать или CAST @C, я получаю неверное имя столбца? Что дает?