2014-03-27 94 views
0

我建立一個SQL查詢爲:SQL服務器選擇變量到另一個變量

declare @query1 varchar(1000) 
declare @results varchar(4000) 
set @results = '' 

WHILE (condition) 
BEGIN 
    set @query1 = 'SELECT column FROM table' 
    set @results = @results + ", " + (select @query1) 
END 

print @results 

因此,例如經過2次迭代,我想有:

columnvalue, columnvalue 

然而,在上述代碼,@results代替實際的sql查詢。

回答

0

你永遠不會執行query1,而是分配它的文本字符串SELECT COLUMN FROM table

什麼你要找的是一樣的東西SELECT @query1 = column from table

0

聲明@ QUERY1 VARCHAR(1000)
聲明@Results VARCHAR(4000)
集@Results = ''

IF OBJECT_ID(」 tempdb ..#ResultSet')IS NOT NULL
BEGIN
DROP TABLE #ResultSet;
END

CREATE TABLE #ResultSet(mycolumn VARCHAR(1000))

WHILE(條件)
BEGIN
組@ QUERY1 = 'SELECT FROM表列'

INSERT INTO #ResultSet// Temp表存儲運行結果動態查詢
exec(@ query1)//執行運行動態查詢

SELECT @ query1 = mycolumn F ROM #ResultSet

集@Results = @Results + '' +(選擇@ QUERY1)

END

打印@Results
DROP TABLE #ResultSet

希望這有助於。

+0

查詢'SELECT column FROM table'是存儲在局部變量中的動態sql。所提供的例子很簡單。 –

0

好的。這是如何完成的:

declare @query1 nvarchar(1000) 
declare @results nvarchar(4000) 
set @results = '' 

declare @changesOUT nvarchar(1000) 

set @query1 = 'SELECT @changes = column FROM table WHERE condition' 

EXEC sp_executesql @query1, N'@changes varchar(4000) OUTPUT', @[email protected] OUTPUT 

set @results = @results + (SELECT @changesOUT) + char(10) 

print @results