目的:最近碰到一个问题,就是我的数据库里面有很多表,这些表结构都一样,只是名字不一样,不过表名也有一定规律,也不是说杂乱无章的,当然这个可以自己控制条件筛选。
先假设这些表叫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 +