2013-05-21 17 views
0

嗨,大家好我的基本的SQL知識需要一些幫助的Sql - 獲取下一個值來代替變量值

我希望能夠在一個表中的值來代替一個變量的值,並保持運行查詢,直到終值在表中達到

開始查詢

DECLARE @prime_SCHEMA VARCHAR(20) 
DECLARE @next_SCHEMA VARCHAR(20) 
DECLARE @TABLE_name VARCHAR(100) 
DECLARE @SQL VARCHAR(500) 

SET @prime_SCHEMA = 'aaa' 
SET @next_SCHEMA = 'bbb' 
SET @TABLE = 'table1' 
SET @sql = 'select top 1 * into '[email protected]_SCHEMA +'.'[email protected]_name +' from '[email protected]_SCHEMA +'.'[email protected]_name +' TRUNCATE TABLE '[email protected]_SCHEMA +'.'[email protected]_name 
print @sql 

我現在想換這個在獲取和使用一個名爲「table_val」表周圍更新TABLE_NAME值 和循環,直到所有行已用於表

如此有效,我可以結束與多個@sql語句

感謝

回答

0

嘗試這一個 -

查詢:

DECLARE 
     @prime_schema SYSNAME = 'aaa' 
    , @next_schema SYSNAME = 'bbb' 

DECLARE @SQL NVARCHAR(MAX) 
SELECT @SQL = (
    SELECT CHAR(13) + ' 
     SELECT * 
     INTO [' + @next_schema + '].[' + o.name + '] 
     FROM [' + s.name + '].[' + o.name + '] 
     WHERE 1 != 1' 
    FROM sys.objects o WITH (NOWAIT) 
    JOIN sys.schemas s WITH (NOWAIT) ON o.[schema_id] = s.[schema_id] 
    WHERE o.[type] = 'U' 
     AND s.name = @prime_schema 
     AND o.name IN ('table1', 'table2', 'table3') 
    FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') 

PRINT @SQL 

輸出:

SELECT * 
INTO [bbb].[table1] 
FROM [aaa].[table1] 
WHERE 1 != 1 

SELECT * 
INTO [bbb].[table2] 
FROM [aaa].[table2] 
WHERE 1 != 1 

SELECT * 
INTO [bbb].[table3] 
FROM [aaa].[table3] 
WHERE 1 != 1 
+0

嗨,感謝您的及時響應 我更多的是多重聲明感謝在bbb模式上創建表。然後截斷只是爲了清除頂部1 – user2181700

+0

好吧這工程,但我會如何替換table2,表3和以後的表名 我通常會使用ssis,但這需要在sql中完成 – user2181700

+0

謝謝DUDE: - ) – user2181700