0
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列 如何在没有任何中断的情况下创建表格语句。无法执行光标生成语句
我知道有些人会建议不要使用游标,但由于一个表的列数太多,因此输入所有列名称将非常耗时。