select @tabname=name from inserted

解决方案 »

  1.   

    谢谢回复!
    我试了,可以,不过有点问题。
    在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
    后再使用建表语句就不行了!!!
    不知道这是为什么?
      

  2.   

    select @tabname=id from inserted
    set @sql='create table ['+cast( @tabname as varchar(100))+'] (id int)'
    exec(@sql)
      

  3.   

    我找到原因了,不过我还是不能解决!
    我插入的值一般为(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)
    我试过了,不过好像也不行!
      

  4.   

    另外一点,将插入值改为('00087w','michael')
    后也是不能生成表的。
    为什么?
      

  5.   

    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)
      

  6.   

    十二万分感谢 pengdali(大力 V2.0) !!!!!
    运行通过,多谢!
    现在结贴散分!
    向pengdali(大力 V2.0) 致以我最崇高的敬意:)