谢谢回复! 我试了,可以,不过有点问题。 在inserted表中有两列,id char(6) 和 name char(6) 其中id为主键,非空, name 可以是空值,可以重复 使用select @tabname=name from inserted 然后用 set @sql='create table '+ @tabname + '(id int)' exec(@sql) 就可以正确建立表。而用 使用select @tabname=id from inserted 后再使用建表语句就不行了!!! 不知道这是为什么?
select @tabname=id from inserted set @sql='create table ['+cast( @tabname as varchar(100))+'] (id int)' exec(@sql)
我找到原因了,不过我还是不能解决! 我插入的值一般为(id,name)=('00087','michael')这种形式。 而好像select @tabname=id from inserted 这条语句对'00087'得到的结果可能当成数字了,我不知道具体怎样!!! 如果将插入值改为('w00087','michael') 那么用 select @tabname=id from inserted 后就可以生成表了。 为什么? 另:select @tabname=id from inserted set @sql='create table ['+cast( @tabname as varchar(100))+'] (id int)' exec(@sql) 我试过了,不过好像也不行!
另外一点,将插入值改为('00087w','michael') 后也是不能生成表的。 为什么?
declare @tabname varchar(100) select @tabname=cast(id as varchar(100)) from inserted set @sql='create table ['+cast( @tabname as varchar(100))+'] (id int)' exec(@sql)
我试了,可以,不过有点问题。
在inserted表中有两列,id char(6) 和 name char(6)
其中id为主键,非空, name 可以是空值,可以重复
使用select @tabname=name from inserted
然后用
set @sql='create table '+ @tabname + '(id int)'
exec(@sql)
就可以正确建立表。而用
使用select @tabname=id from inserted
后再使用建表语句就不行了!!!
不知道这是为什么?
set @sql='create table ['+cast( @tabname as varchar(100))+'] (id int)'
exec(@sql)
我插入的值一般为(id,name)=('00087','michael')这种形式。
而好像select @tabname=id from inserted
这条语句对'00087'得到的结果可能当成数字了,我不知道具体怎样!!!
如果将插入值改为('w00087','michael')
那么用
select @tabname=id from inserted
后就可以生成表了。
为什么?
另:select @tabname=id from inserted
set @sql='create table ['+cast( @tabname as varchar(100))+'] (id int)'
exec(@sql)
我试过了,不过好像也不行!
后也是不能生成表的。
为什么?
select @tabname=cast(id as varchar(100)) from inserted
set @sql='create table ['+cast( @tabname as varchar(100))+'] (id int)'
exec(@sql)
运行通过,多谢!
现在结贴散分!
向pengdali(大力 V2.0) 致以我最崇高的敬意:)