值类型可以统一用一种 如nvarchar

解决方案 »

  1.   

    大小也可以统一
    nvarchar(20)
      

  2.   

    先产生创建表的字符串,然后用exec(字符串变量)完成创建工作
      

  3.   

    toJohnShen(因果网):字符串怎么生成???
    只在sql中
      

  4.   

    一般情况下,创建表的语句不过时:
    CREATE TABLE (列名 列类型,。)
    如果需要主键、索引,则还需要其他的SQL语句对于楼主所需要的功能,就可以在存储过程中,建立一个游标,循环获取要创建的表的各列列名,然后和表名一起根据CREATE TABLE语句的规则拼接成一个SQL,然后调用EXECUTE方法来执行这个SQL就可以了
    创建主键、索引的方法与此类似的
      

  5.   

    比如:
    DECLARE @ls_NewSQL varchar(4000)
    DECLARE @ls_ColName varchar(100)
    SELECT @ls_NewSQL = 'CREATE TABLE '
    SELECT @ls_NewSQL = @ls_NewSQL + 新表的表名 + '( 'DECLARE C_Col CURSOR FOR
    SELECT 列名 FROM 存列名信息的表
    OPEN C_Col
    FETCH C_Col INTO @ls_ColName
    WHILE @@FETCH_STATUS
    BEGIN
      SELECT @ls_NewSQL = @ls_NewSQL + @ls_ColName + ' nvarchar(100),'
      FETCH C_Col INTO @ls_ColName
    END
    CLOSE C_Col
    DeAllocate C_Col
    SELECT @ls_NewSQL = Left(@ls_NewSQL,Len(@ls_NewSQL) - 1)
    SELECT @ls_NewSQL = @ls_NewSQL + ')'EXECUTE(@ls_NewSQL)
      

  6.   

    --咋没人答啊,我答
    declare @_itemlist varchar(8000)set @_itemlist = 'create table ['+@_yourtablename+'] (' + char(13)
    select @_itemlist = @_itemlist + '['+yourselectitemname + '] nvarchar(20) ,'+ char(13)
       from yourselecttable
    select @_itemlist = left( @_itemlist  , len(@_itemlist )-2) + char(13)+')  ON [PRIMARY]'
    exec( @_itemlist )
      

  7.   

    --比较简单的例子...
    create proc proc_test1 @tb_name varchar(20)
    as
    declare @c1 varchar(10),
            @c2 varchar(10),
            @c3 varchar(10),
            @c4 varchar(10),
            @sql varchar(200)
    select @c1=a,@c2=b,@c3=c,@c4=d
      from 表
     where ...
    set @sql = 'create table ['+@tb_name+'](['+@c1+'] varchar(20),
                                        ['+@c2+'] varchar(20),
                                        ['+@c3+'] varchar(20),
                                        ['+@c4+'] varchar(20))'
    exec(@sql)
      

  8.   

    declare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+[value]+' nvarchar(20),' from table1
    set @sql=substring(@sql,1,len(@sql)-1)
    exec('create table newtable('+@sql+')')