2012-10-15 121 views
0

我有一個名爲SELECT_DESCRIPTION的過程,它接收一個id並返回一個我需要在我的頁面中顯示的Description域。TSQL:將select子句中的id傳遞給存儲過程

現在我想創建一個具有多個IDS從SELECT子句喜歡這個未來的一個新的程序:

SELECT id FROM MYTABLE 

可以將它傳遞給SELECT_DESCRIPTION過程,所以我可以有相同數量的描述

如果我使用PHP我會做這樣的事情:

$sql=」SELECT id FROM MYTABLE」; 
$result = mysql_query($sql) //using mysql to make the example faster but TSQL is what I use 
or die(mysql_error()); 

while($row = mysql_fetch_array($result)) { 
    $newSql = "EXEC SELECT_DESCRIPTION @id = '$row[‘id’]'"; 
//do whatever with $newSql 

} 

但我需要使用的過程。是可以做到的嗎?我該怎麼做?

謝謝!

+0

根據你的php源碼重新標記爲mysql –

+0

我不知道mysql的語法,但你應該只能選擇id,SELECT_DESCRIPTION(id)FROM MYTABLE,不是嗎? –

+0

對不起,沒有mysql,但TSQL的PHP​​是東西引導,使其更快 – user523129

回答

0

所以你想在TSQL做所有這些?像這樣的東西會做:

DECLARE @tmp TABLE (tmpID INT IDENTITY, tblID INT) 
DECLARE @RecordCount INT, 
@LoopCount INT, 
@ID INT 

INSERT INTO @tmp SELECT id FROM MYTABLE 
SELECT @RecordCount = COUNT(*) FROM @tmp 
SET @LoopCount = 1 

WHILE @LoopCount <= @RecordCount 
    BEGIN 

    SELECT @ID = tblID FROM @tmp WHERE tmpID = @LoopCount 
    EXEC SELECT_DESCRIPTION @ID 
    SELECT @LoopCount = @LoopCount + 1 

    END 

的@tmp表有保證的任何數據,你正運行在具有連續行數(1,2,3,4,等)的環標識列。

+0

看起來不錯,謝謝!但是,我應該聲明@tmpTable? – user523129

+0

這是一個錯字。應該只是@tmp。 – Jim

相關問題