TSQL:将select子句中的id传递给存储过程

时间:2012-10-15 14:38:40

标签: php tsql stored-procedures

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

现在我想创建一个新的过程,它有一些来自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

}

但我需要使用一个程序。是可以做到的吗?我该怎么做?

非常感谢!

1 个答案:

答案 0 :(得分: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等)。