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; ENDGOexec hy_GenVIEw 'GoodsSaleStock'总结
以上是内存溢出为你收集整理的sqlserver 创建月表视图过程全部内容,希望文章能够帮你解决sqlserver 创建月表视图过程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)