create procedure up_Something (@TableNum int)
as
declare @sql nvarchar(max)
set @sql = N'select * from table_name_' + cast(@tablenum as varchar(20))
exec sp_executesql @SQL
ASKER
/*
create table table_name_1 (testcol1 int null, testcol2 varchar(10) null, testcol3 datetime null)
create table table_name_2 (testcol1 int null, testcol2 varchar(10) null, testcol3 datetime null)
create table table_name_3 (testcol1 int null, testcol2 varchar(10) null, testcol3 datetime null)
create table table_name_4 (testcol1 int null, testcol2 varchar(10) null, testcol3 datetime null)
*/
ALTER PROCEDURE dbo.sp_create_view
@Pattern sysname
AS
BEGIN
SET NOCOUNT ON
DECLARE @TabCount int
,@Sql varchar(8000)
,@TableName sysname
IF OBJECT_ID('tempdb..#TmpTables', 'U') IS NOT NULL
BEGIN
DROP TABLE #TmpTables
END
SELECT TableName = TABLE_CATALOG + '.' + TABLE_NAME
INTO #TmpTables
FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE @Pattern + '%'
ORDER BY 1
SELECT @SQL = 'CREATE VIEW dbo.DynamicView AS '
WHILE EXISTS (SELECT 1 FROM #TmpTables)
BEGIN
SELECT TOP 1 @TableName = TableName
FROM #TmpTables
SELECT @Sql = @SQL + 'SELECT * FROM ' + @TableName + ' UNION ALL '
DELETE #TmpTables WHERE TableName = @TableName
END
IF OBJECT_ID('tempdb..#TmpTables', 'U') IS NOT NULL
BEGIN
DROP TABLE #TmpTables
END
SELECT @Sql = LEFT(@Sql, LEN(@Sql) - 10)
PRINT @Sql
--EXEC @Sql
END
GO
/* exec sp_create_view 'table_name_' */
ASKER
ASKER
select t.table_schema + '.' + t.table_name
from information_schema.tables t
inner join information_schema.columns c on c.table_name = t.table_name
where t.table_type = 'BASE TABLE' and c.column_name = 'timestamp'
WHILE EXISTS (SELECT 1 FROM #TmpTables)
BEGIN
DECLARE @SQL AS VARCHAR(MAX);
SELECT @SQL = ISNULL(@SQL + ' UNION ALL ', '')
+ 'SELECT * FROM ' + TableName
FROM #TmpTables;
SET @SQL = 'CREATE VIEW dbo.DynamicView AS ' + @SQL;
IF OBJECT_ID('dbo.DynamicView', 'V') IS NOT NULL
BEGIN
DROP VIEW dbo.DynamicView
END
PRINT (@Sql)
END
ASKER
ASKER
ASKER
ASKER
ALTER PROCEDURE dbo.sp_create_view
@TablePattern NVARCHAR(255)
, @SearchColumn NVARCHAR(255)
AS
BEGIN
SET NOCOUNT ON;
-- ensure temp tables cleaned from last run
IF OBJECT_ID('tempdb..#TmpTables', 'U') IS NOT NULL
BEGIN
DROP TABLE #TmpTables
END
-- get matching table names from database
SELECT TableName = '[' + t.table_schema + '].[' + t.table_name + ']'
INTO #TmpTables
FROM information_schema.tables t
INNER JOIN information_schema.columns c on c.table_name = t.table_name
WHERE t.table_type = 'BASE TABLE'
AND c.column_name LIKE @SearchColumn /* can use exact match or include % in passed string */
AND t.table_name LIKE @TablePattern + '%'
GROUP BY t.table_schema, t.table_name;
-- if tables where found, run updates
IF EXISTS (SELECT 1 FROM #TmpTables)
BEGIN
-- build dynamic sql script for view
DECLARE @SQL AS VARCHAR(MAX);
SELECT @SQL = ISNULL(@SQL + ' UNION ', '')
+ 'SELECT * FROM ' + TableName
FROM #TmpTables;
SET @SQL = 'CREATE VIEW dbo.DynamicView AS ' + @SQL;
-- remove old view
IF OBJECT_ID('dbo.DynamicView', 'V') IS NOT NULL
BEGIN
DROP VIEW dbo.DynamicView
END
-- execute dynamic sql script
EXEC(@SQL);
END
-- cleanup temp tables
IF OBJECT_ID('tempdb..#TmpTables', 'U') IS NOT NULL
BEGIN
DROP TABLE #TmpTables
END
END
GO
ASKER
Microsoft SQL Server is a suite of relational database management system (RDBMS) products providing multi-user database access functionality.SQL Server is available in multiple versions, typically identified by release year, and versions are subdivided into editions to distinguish between product functionality. Component services include integration (SSIS), reporting (SSRS), analysis (SSAS), data quality, master data, T-SQL and performance tuning.
TRUSTED BY