sqlserver 创建月表视图过程
来源:互联网 发布:c语言两个等于号 编辑:程序博客网 时间:2024/06/04 20:15
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),@StartDT,112)<=convert(varchar(6),@EndDT,112)BEGIN SELECT @strTableName=@tablename+convert(varchar(6),@StartDT,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);ENDSET @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,1,@Msg,@BreakPoint,@Err); return -1; ENDGOexec hy_GenView 'GoodsSaleStock'
0 0
- sqlserver 创建月表视图过程
- SQLserver 在存储过程中创建函数,创建视图
- SQLServer创建视图
- SQLServer创建视图
- 为SQLServer创建视图
- T-SQL sqlServer 创建视图
- sqlserver存储过程创建
- sqlserver 创建过程
- SqlServer判断(数据库,表,视图,存储过程等)是否存在
- 读取sqlserver用户自定义表、视图和存储过程
- 查看表,视图,过程的创建语句
- SqlServer 如何按年月自动创建表分区?
- SQLServer创建表,插入数据,查询,创建触发器,存储过程
- SQLServer创建表,插入数据,查询,创建触发器,存储过程
- 每个月创建下一个月的表(存储过程)
- sqlserver创建mysql的链接建立视图
- sqlserver 创建用户只能访问指定视图
- SQLserver中的视图与主外键的创建
- Android开发总结笔记 GirdLayout(网格布局) 1-1-5
- Handlebars-Helper写法
- RandomAccessFile的使用
- HDU 1579(枚举区间+最小生成树)
- ASN.1编码学习笔记
- sqlserver 创建月表视图过程
- php小数点后取两位
- win32和64位oracle客户端共存的配置方式
- 玩的就是你,轻量级自定义View
- Spring MVC +jpa 删除联合主键表数据
- 知乎spark与hadoop讨论
- 屏幕适配1
- Eclipse 导入外部项目无法识别为web项目并且无法在部署到tomcat下
- a的n次幂 —— POJ 3100 Root of the Problem