不知道select 有这种作用呢,还得努力学习!!!!

解决方案 »

  1.   

    ALTER  proc test_insert_Report
    (
    @Name varchar(50),
    @TableName varchar(50),
    @CategoryName varchar(50)
    )
    as
    declare @CategoryID int
    declare @sql nvarchar(4000)
    set @sql='create table aaaaa('
    select @sql=@sql+ReportFieldName+'varchar(50),'
    from ReportField where ReportID = '1'
    set @sql=left(@sql,len(@sql)-1)+')'
    exec(@sql)
    select @CategoryID=[ID] from DataCategory where [Name]=@CategoryName
    insert into Report values(@Name,@TableName,@CategoryID)
    go还是有问题啊
    这个是我项目里的
    用途是一张Report表里插入一条数据后,要自动生成一张新的表
    现在问题还有几个:
    1:根本没有建立aaaaa这张表2:就算建立了,其实这个表名aaaaa应该是参数@TableName里来的,怎么让他从参数@TableName里来?也就是说create table ????这里怎么写?我这里新建表不能成功,所以我也测试不了,只能暂时写个aaaaa了。3:执行这个存储过程exec test_insert_Report 'Test','aaaaa','财务报表'后,可以执行成功,但是报一个错:
    服务器: 消息 173,级别 15,状态 1,行 1
    列 'idvarchar' 的定义中必须包括数据类型。(所影响的行数为 1 行)4:where ReportID = '1',这个1应该是Report表插入一条数据后自动增长的一个主键的值,这个值怎么得到呢?也就是说where ReportID =????什么呢。。