2016-08-22 84 views
0

我有下面的查詢:SQL服務器循環表

select * from tblA 

這TBLA有列ID和NAME

我想從這個表獲得的ID,並使用到的過程。

即:

exec spGet ID 

這是一個循環,對不對?

我該怎麼做?

Tnks。

+0

你需要用逗號分隔的ID列表嗎? –

+0

查詢本身將返回包含表中所有字段的記錄集對象。如果您修改它以從tblA中選擇id,您將從數據庫中獲得一個記錄集,然後可以在SQL服務器之外的代碼中「循環」......爲什麼需要循環?數據如何被使用?你使用.net或其他語言來查詢數據庫? – xQbert

+0

[如何爲查詢返回的每一行執行一次存儲過程?](http://stackoverflow.com/questions/886293/how-do-i-execute-a-stored-procedure-once-for-each -row-by-query)/ [SQL - 爲每條記錄調用存儲過程](http://stackoverflow.com/questions/2077948/sql-call-stored-procedure-for-each-record) –

回答

0

如果你真的想這樣做,你可以使用遊標,但我強烈建議重新考慮你在做什麼。

DECLARE @ID INT; 

DECLARE curIteration CURSOR 
FOR 
    SELECT ID 
    FROM tblA; 

OPEN curIteration 
FETCH NEXT FROM curIteration 
INTO @ID; 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    EXECUTE spGet @ID; 

    FETCH NEXT FROM curIteration 
    INTO @ID; 
END 

CLOSE curIteration; 
DEALLOCATE curIteration; 
+0

WOKRS SO好!謝謝! :) – jsfelipearaujo