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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章