CREATE PROCEDURE CrtUserRcdFrmTemp_p
@modleid int
AS
declare @name varchar(50) --字段名
declare @type varchar(50) --字段类型
declare @typelen int --类型长度
declare @strfield nvarchar(4000) --建立数据表的字符串
declare @strfield1 nvarchar(4000)
declare @strfield2 nvarchar(4000)
declare @strfield3 nvarchar(4000)
declare @strfield4 nvarchar(4000)
declare @strfield5 nvarchar(4000)declare @tablename varchar(50)
--得到要建立的物理表的名称
select @tablename=code from recordformtemphead where id=@modleid
--判断是文件的还是档案的表
if (select rcdtype from recordcatalog where id=(select cataid from recordformtemphead where id=@modleid))=2
set @strfield='create table '+'rcd'+'archive_'+@tablename+'(id int identity,'
else
set @strfield='create table '+'rcd'+'file_'+@tablename+'(id int identity,'
declare readfield cursor
for
select code ,case ctrtype when 3 then 'varchar' when 4 then 'int' when 5 then 'datetime' when 2 then 'bit' end,strlen from recordformfield where id in (select fieldid from recordformtemp where frmid=@modleid)
open readfield
fetch next from readfield
into @name,@type,@typelen
while @@fetch_status =0
begin
--case @type when 'datetime' then set @strfield=@strfield+@name +' '+@type+' '+'('+convert(varchar,@typelen)+')'+','
set @typelen=convert(varchar,@typelen)
if @typelen='-1'
set @strfield=@strfield+@name + ' '+ @type+' '+','
else
set @strfield=@strfield+@name +' '+@type+' '+'('+convert(varchar,@typelen)+')'+','fetch next from readfield
into @name ,@type,@typelen
end
close readfield
deallocate readfield--建立数据库
--set @strfield=left(@strfield,len(@strfield)-1)
set @strfield=@strfield+'destflah bit,destdate datetime,usestatus bit)'
set @strfield=''''+@strfield+''''exec(@strfield)
GO
如上
执行exec(@strfield)时报错:
服务器: 消息 170,级别 15,状态 1,行 1
[Microsoft][ODBC SQL Server Driver][SQL Server]第 1 行: 'create table rcdfile_fwwjdj(id int identity,djh varchar (50),wh varchar (50),bt varchar (100),cwjg varchar (100),bcq datetime ,m' 附近有语法错误。
应该是把字符串截断了。怎么解决?
@modleid int
AS
declare @name varchar(50) --字段名
declare @type varchar(50) --字段类型
declare @typelen int --类型长度
declare @strfield nvarchar(4000) --建立数据表的字符串
declare @strfield1 nvarchar(4000)
declare @strfield2 nvarchar(4000)
declare @strfield3 nvarchar(4000)
declare @strfield4 nvarchar(4000)
declare @strfield5 nvarchar(4000)declare @tablename varchar(50)
--得到要建立的物理表的名称
select @tablename=code from recordformtemphead where id=@modleid
--判断是文件的还是档案的表
if (select rcdtype from recordcatalog where id=(select cataid from recordformtemphead where id=@modleid))=2
set @strfield='create table '+'rcd'+'archive_'+@tablename+'(id int identity,'
else
set @strfield='create table '+'rcd'+'file_'+@tablename+'(id int identity,'
declare readfield cursor
for
select code ,case ctrtype when 3 then 'varchar' when 4 then 'int' when 5 then 'datetime' when 2 then 'bit' end,strlen from recordformfield where id in (select fieldid from recordformtemp where frmid=@modleid)
open readfield
fetch next from readfield
into @name,@type,@typelen
while @@fetch_status =0
begin
--case @type when 'datetime' then set @strfield=@strfield+@name +' '+@type+' '+'('+convert(varchar,@typelen)+')'+','
set @typelen=convert(varchar,@typelen)
if @typelen='-1'
set @strfield=@strfield+@name + ' '+ @type+' '+','
else
set @strfield=@strfield+@name +' '+@type+' '+'('+convert(varchar,@typelen)+')'+','fetch next from readfield
into @name ,@type,@typelen
end
close readfield
deallocate readfield--建立数据库
--set @strfield=left(@strfield,len(@strfield)-1)
set @strfield=@strfield+'destflah bit,destdate datetime,usestatus bit)'
set @strfield=''''+@strfield+''''exec(@strfield)
GO
如上
执行exec(@strfield)时报错:
服务器: 消息 170,级别 15,状态 1,行 1
[Microsoft][ODBC SQL Server Driver][SQL Server]第 1 行: 'create table rcdfile_fwwjdj(id int identity,djh varchar (50),wh varchar (50),bt varchar (100),cwjg varchar (100),bcq datetime ,m' 附近有语法错误。
应该是把字符串截断了。怎么解决?
解决方案 »
- win2008系统装SQL2000出问题,怎么解决?
- set xact_abort on/set xact_abort off 与begin tran/commit tran 的区别
- 4百万纪录join250万纪录,然后求和分类汇总
- A机上停止sql服务,将mdf,lfg拷到B机上,有时可以正常附加,有时不能正常附加,据说必须先执行“分离数据库”,有这个必要吗?
- 两张表 去掉重复的列 不能新建虚拟表之类的 直接用SQL出来
- 帮忙写个sql,在线等,马上给分---多谢!
- 怎样把一个数据库中的数据移到另一个数据库中
- 多条件查询,或者字符串相加的问题
- 求每天的业绩统计,并生成数据
- 学数据库是不是比学vc,vb有前(钱)途呢?举个例子
- 不知道这样需求如何实现
- 关分给你们!!
你把create 的句子直接写出来,看能否建立不就可以知道它支持与否.
再者试试把你的动态句子打出来看看,句子是否正确....