sqlserver 创建月表视图过程

sqlserver 创建月表视图过程,第1张

概述sqlserver 创建月表视图过程,方便数据查询。 CREATE Procedure [dbo].[HY_GenView] @tablename varchar(32) -- 需调用的表名 AS BEGIN declare @Err int; declare @BreakPoint int; declare @Msg varchar(255); declare @st

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 创建月表视图过程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1168847.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存