Я хочу написать хранимую процедуру, чтобы изменить представление, передав имя вида в качестве параметра хранимой процедуры.SQL Server 2008 R2: изменить вид
Пример:
У меня есть мнение, называемое также view1
, который выбирает один из 4 таблиц, называемых tb1, tb2, tb3, tb4
, которые обновляются с некоторыми изменениями.
Теперь я хочу, чтобы представление обновлялось последними обновленными таблицами.
Попытка:
create proc alterview
@viewname varchar(50)
AS
Declare @query nvarchar(max)
Declare @TableNames varchar(max)
SET @query = 'DECLARE Cursor_Get_Tables CURSOR fast_forward for
SELECT Table_Name
FROM INFORMATION_SCHEMA.VIEW_TABLE_USAGE
WHERE View_Name = ''' + @ViewName + ''''
EXEC sp_executesql @query
OPEN Cursor_Get_Tables
FETCH NEXT FROM Cursor_Get_Tables INTO @TableNames
WHILE(@@fetch_status = 0)
BEGIN
/* STUCK here */
SET @query = 'ALTER VIEW ' + @ViewName + ' AS SELECT * FROM ' + @TableNames+ '
/* Not getting to get all tables into single alter view script here */
EXEC(@SQL)
FETCH NEXT FROM Cursor_Get_Tables INTO @TableNames
END
CLOSE Cursor_Get_Tables
DEALLOCATE Cursor_Get_Tables
GO
Примечание: Я не получаю, как получить все таблицы в один ALTER VIEW
сценарий как:
ALTER VIEW View1 AS
SELECT * FROM tb1
UNION
SELECT * FROM tb2
UNION
SELECT * FROM tb3
UNION
SELECT * FROM tb4
UNION;
Большое спасибо. – Meem