DECLARE @COLNAME VARCHAR(100)
DECLARE @CREATE VARCHAR (1000)
DECLARE @TYPE VARCHAR(1)
SET @COLNAME = ''
SET @TYPE = 5
SET @CREATE = 'CRATE TABLE TABLE_TYPE_' + @TYPE + '('
DECLARE MyCursor CURSOR FOR
SELECT Name FROM LAYOUT WHERE RecordType = @TYPE
ORDER BY Start
OPEN MyCursor
FETCH NEXT FROM MyCursor INTO @COLNAME
WHILE @@FETCH_STATUS = 0
BEGIN
SET @COLNAME = REPLACE(@COLNAME, 'WX-', '')
SET @COLNAME = REPLACE(@COLNAME, '(', '')
SET @COLNAME = REPLACE(@COLNAME, ')', '')
SET @CREATE = @CREATE + '[' + @COLNAME + ']' + ' VARCHAR(1000),'
FETCH NEXT FROM MyCursor INTO @COLNAME
END
CLOSE MyCursor
DEALLOCATE MyCursor
SET @CREATE = LEFT(@CREATE, len(@CREATE) -1) + ')' --get rid of last comma
PRINT (@CREATE) --EXEC (@CREATE)
Похоже, что существует максимальный предел для MS. Когда я печатаю @CREATE, многие строки были обрезаны. EX. Есть 300 столбцов, но как-то он может печатать только до 200 столбцов. Как я могу сопоставить инструкции create table без каких-либо обрезков.Невозможно выполнить оператор create с помощью курсора
Я знаю, что некоторые люди подскажут, что не используйте курсор, но поскольку для одной таблицы так много столбцов, потребуется много времени, чтобы вывести все имена колонок.