第一种方法:declare @str varchar(20);
set @str='test';
declare @t table
(
declare @i int;
set @i=2;
str1 nvarchar(10),while(@i<=2)--通过循环添加字段
begin
if(@i=2)--拼接时最后一个不加逗号
 @str nvarchar(10)
else
@str nvarchar(10)+','
set @i=@i+1;
end
);报错信息:
消息 156,级别 15,状态 1,第 6 行
关键字 'declare' 附近有语法错误。
消息 102,级别 15,状态 1,第 8 行
'str1' 附近有语法错误。
消息 102,级别 15,状态 1,第 13 行
'@str' 附近有语法错误。
消息 102,级别 15,状态 1,第 18 行
')' 附近有语法错误。
第二中方法:
declare @t table
(
str1 nvarchar(10),
str2 nvarchar(10));
 @t.Column.Add("test",varchar(50));--这种方法不知道可行不,但是总是语法错误报错信息:
消息 102,级别 15,状态 1,第 7 行
'@t' 附近有语法错误。

解决方案 »

  1.   


    exec('declare @t table(id int)')exec(这里是你拼接的字符串变量)
      

  2.   

    declare @sql as varchar(100)
    declare @t as varchar(10)
    set @t = 'test'
    set @sql = 'create table ' + @t + ' (str1 nvarchar(10),str2 nvarchar(10))'exec(@sql)select * from test--exec('drop table ' + @t)/*
    str1       str2       
    ---------- ---------- (所影响的行数为 0 行)
    */