sqlserver 创建月表视图过程
发布时间:2020-12-12 13:13:10 所属栏目:MsSql教程 来源:网络整理
导读:sqlserver 创建月表视图过程,方便数据查询。 CREATE Procedure [dbo].[HY_GenView] @tablename varchar(32) -- 需调用的表名 AS BEGIN declare @Err int; declare @BreakPoint int; declare @Msg varchar(255); declare @strTableName char(32),@SQL varcha
sqlserver 创建月表视图过程,方便数据查询。 CREATE Procedure [dbo].[HY_GenView] @tablename varchar(32) -- 需调用的表名 AS BEGIN declare @Err int; declare @BreakPoint int; declare @Msg varchar(255); declare @strTableName char(32),@SQL varchar(8000),@SQLString varchar(8000),@ViewName varchar(32); declare @StartDT smalldatetime,@EndDT smalldatetime; select @StartDT='2014-01-01',@EndDT=getdate() if @EndDT<@StartDT begin select @Msg='请检查日期:开始日期大于结束日期!',@BreakPoint=359550; goto ErrHandle; end -- 获取该视图的各列名 declare @i int,@id int,@max int,@str varchar(2000) select @id=id from sysobjects where name=@tablename and xtype='u' IF @id IS NULL BEGIN select @Msg='请检查数据表!',@BreakPoint=359551; goto ErrHandle; END select @max=max(colorder),@i=1 from syscolumns where id=@id select @str=name from syscolumns where id=@id and colorder=@i while @i<@max begin select @i=@i+1 select @str=@str+','+name from syscolumns where id=@id and colorder=@i END -- 取视图名,并判断该视图是否存在,存在则删除 select @ViewName='HY_'+@tablename+'View' select @SQLString='if object_id('''+@ViewName+''',''V'') is not null drop view '+@ViewName+';' print(@SQLString);exec (@SQLString); -- 获取创建视图的语句 select @SQL='Create View '+@ViewName+' as ' select @tablename=ltrim(rtrim(@tablename)) select @strTableName=@tablename+convert(varchar(6),@StartDT,112) SET @SQLString='' WHILE convert(varchar(6),112)<=convert(varchar(6),@EndDT,112) BEGIN SELECT @strTableName=@tablename+convert(varchar(6),112) IF EXISTS ( SELECT * FROM dbo.sysobjects WHERE name=@strTableName AND xtype='u' ) SELECT @SQLString=ltrim(rtrim(@SQLString))+' union all select '+@str+' from '+@strTableName ELSE IF year(@StartDT)=year(@EndDT) AND month(@StartDT)=month(@EndDT) SELECT @SQLString=ltrim(rtrim(@SQLString))+' union all select '+@str+' from '+@tablename SELECT @StartDT=dateadd(MONTH,1,@StartDT); END SET @SQLString=@SQL+substring(@SQLString,11,len(@SQLString)) -- 执行创建视图的语句 PRINT @SQLString;exec (@SQLString); -- 报错处理 select @Err=@@Error,@Msg='取表名时出错!',@BreakPoint=359551; if (@Err is null) or (@Err!=0) goto ErrHandle; return 0; ErrHandle: raiserror('%s,断点=%d,Err=%d',16,@Msg,@BreakPoint,@Err); return -1; END GO exec hy_GenView 'GoodsSaleStock' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |