2012-10-15 50 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

相关问题