目的:最近碰到一個問題,就是我的數據庫裏面有很多表,這些表結構都一樣,只是名字不一樣,不過表名也有一定規律,也不是說雜亂無章的,當然這個可以自己控制條件篩選。
先假設這些表叫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