2011-10-31 46 views
1

我有一個查詢(sp)需要很長時間才能執行:使用來自Long計算的值Select to Next語句?

例如,

Select name, age ,token1 from Mytable where id=2 //long calc.... 

//later on the same sp... 

select anotherCalc from Table2 where tokenId=token1 // token1 is from the prev query. 

如何將第一個查詢的值傳遞給第二個?

Ive tried : 

declare @tmp int 

Select name, age ,@tmp=token1 from Mytable where id=2 

但它不工作...

+0

第一個查詢是否只返回最多一行? –

+0

@Martin Smith是 –

回答

0

你不能混用select指派給變量與一個返回結果。如果第一個查詢只返回至多一行,您可以使用

SELECT @name = name, 
     @age = age, 
     @token1 = token1 
FROM Mytable 
WHERE id = 2 

IF(@@ROWCOUNT > 1) 
    RAISERROR('Multiple rows returned - Indeterminate result',16,1) 

/*Return result to client*/ 
SELECT @name AS name, 
     @age AS age, 
     @token1 AS token1 

SELECT anotherCalc 
FROM Table2 
WHERE tokenId = @token1 
+0

如果我的查詢有很多列,我應該爲每個列打開一個變量嗎? –

+0

@RoyiNamir - 是的。或者將單行插入到表變量中,然後使用它。 –

+0

你的意思是計算得出的長結果 - 應該嵌入到#tmp中 - 然後我可以從evbery的範圍中讀取它? –