gc_ding(施主,给个妞泡好么):
你写的我试了可以
但是用到我的数据库上就不行,不知道为什么
我现在是要从ReportField中取ReportFieldName这一列的值
成为一张新的表的字段
前面说电话是举的例子,具体我上面:
alter proc cre_tb
as
declare @sql nvarchar(4000)
set @sql='create table NewTestTable(id int, '
select @sql=@sql+ReportFieldName+' varchar(50), '
from ReportField
set @sql=left(@sql,len(@sql)-1)+')'
exec(@sql)
select * from NewTestTable
go
--写成存储过程如下
create table 电话表(电话类型 nvarchar(100))
insert 电话表
select '国内长途' union all
select '市话' union all
select '手机' union all
select '国外长途'
go
create proc cre_tb
as
declare @sql nvarchar(4000)
set @sql='create table 新表(id int, '
select @sql=@sql+电话类型+' varchar(100), '
from 电话表
set @sql=left(@sql,len(@sql)-1)+')'
exec(@sql)
select * from 新表
go
Create proc procName
as
set nocount on
Declare @sql varchar(8000)
Select @sql='Select identity(int,1,1) as ID,'
Select @sql=@sql+', (Case when 电话类型 when '''+
电话类型+''' then 号码 else '''' end) ['+电话类型+']'
from (Select distinct 电话类型 from 电话表) as a
Select @sql=@sql+' Into #t from 电话表 Select * from #t '
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