sqlserver创建存储过程动态表数量创建视图

目的:最近碰到一个问题,就是我的数据库里面有很多表,这些表结构都一样,只是名字不一样,不过表名也有一定规律,也不是说杂乱无章的,当然这个可以自己控制条件筛选。
先假设这些表叫hd1、hd2、hd3。。。。。。。。。一直这样下去,那我想做的就是把这些表给合并起来形成一张视图。

先分析一下,用sql语句写就是 select * from hd1 union all select * from hd2 union all …
就是这样一直union下去

那么问题就简单了,我们只需要用存储过程将这个逻辑写出来就行

CREATE PROC proc_jjgxc
AS

BEGIN

DECLARE
@v_viewname varchar(50),
@v_sql varchar(MAX),
@tbl_name VARCHAR(MAX)

BEGIN

SET @v_viewname = ‘view_jjgxc’ --定义视图名称
SET @v_sql = 'create view ’ + @v_viewname + ’ as( ’

DECLARE jjgxc_cursor cursor
for (select table_name from (select name table_name from sysobjects where type=‘U’) t where table_name like ‘hd%’ )

OPEN jjgxc_cursor
FETCH NEXT FROM jjgxc_cursor INTO @tbl_name
SET @v_sql += 'SELECT * FROM ’ + @tbl_name + char(13)+char(10)

while @@fetch_status<>-1
begin
SET @v_sql += ’ UNION ALL SELECT * FROM ’ + @tbl_name + cha

你可能感兴趣的:(sqlserver,数据库,sql,sqlserver,数据库,sql)