Excel导入功能的实现(一)
公司的项目,需要一个比较智能的Excel导入模块:需要可以自动生成表和生成列。
忙了一个多星期,终于大体实现了,最近会陆续将这个模块的实现上传上来。
今天,先上传创建表和创建列的相关存储过程。
因为本人水平有限且时间比较紧,许多实现并不是最好的,望广大同学不吝赐教。
创建新表
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
create PROC [dbo].[qjd_CREATETABLE]
@in_tablename VARCHAR ( 30 ),
@in_tabletype varchar(10) ,
@out_error int out
AS
begin transaction
DECLARE @sql VARCHAR ( 8000 ),@dftime varchar(1000)
set @out_error = 0;
if @in_tabletype = 'y'
begin set @dftime = '(convert(varchar(4),datepart(year,getdate())))'; end
else if @in_tabletype = 'm'
begin set @dftime = 'substring(convert(varchar(10),getdate(),112),1,6)'; end
else if @in_tabletype = 'd'
begin set @dftime = 'convert(varchar(10),getdate(),112)' end;
if @dftime is null begin set @out_error = 1 end;
SET @sql =
'CREATE TABLE ' + @in_tablename + ' (ID INT IDENTITY(1000,1),' +
'ImpTime varchar(12) not null CONSTRAINT DF_' + @in_tablename + '_ImpTime DEFAULT '+ @dftime + ' );'
EXEC (@sql) ;
select @out_error = @out_error + @@error;
if @out_error = 0
begin commit transaction end
else begin rollback transaction end
修改表结构
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
create proc [dbo].[qjd_addColumn]
@in_tableid int,
@in_colname varchar(50),
@in_columntype varchar(50),
@in_iskey int
as
declare @tablename varchar(30), @sql varchar(1000);
select @tablename = realname from Qjd_TableInfo where id = @in_tableid;
set @sql = 'alter table ' + @tablename + ' add ' + @in_colname + ' ' + @in_columntype;
if @in_iskey = 1
begin
set @sql = @sql + ' not null default ''空'''
end;
exec (@sql);

浙公网安备 33010602011771号