0

我有一个名为 SELECT_DESCRIPTION 的过程,它接收一个 id 并返回一个我需要在页面中显示的描述字段。

现在我想创建一个新过程,其中有许多来自 select 子句的 id,如下所示:

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

}

但我需要使用一个程序。有可能做到吗?我该怎么做?

万分感谢!

4

1 回答 1

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 等)。

于 2012-10-15T15:59:52.157 回答