如何循环执行SELECT sql语句的结果并将结果用于存储过程?

如何循环执行SELECT sql语句的结果并将结果用于存储过程?,sql,sql-server,tsql,stored-procedures,cursor,Sql,Sql Server,Tsql,Stored Procedures,Cursor,我想使用游标将select查询的结果用于存储过程,但它不起作用 这是我的密码: DECLARE @NumberPhone varchar(50) DECLARE CUR CURSOR STATIC FOR SELECT MobilePhone FROM info_client OPEN CUR FETCH NEXT FROM CUR INTO @NumberPhone WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @return_value i

我想使用游标将select查询的结果用于存储过程,但它不起作用

这是我的密码:

DECLARE @NumberPhone varchar(50)
DECLARE CUR CURSOR STATIC FOR

SELECT  MobilePhone
FROM info_client

OPEN CUR
FETCH NEXT FROM CUR INTO @NumberPhone 

WHILE @@FETCH_STATUS = 0
BEGIN
     DECLARE @return_value int, @idCli int, @sCode varchar(2)

     EXEC   @return_value = StoredP_Test
            @sLignePhone = @NumberPhone,
            @sIMEI ='00000000000000000',
            @idCli = @idCli OUTPUT,
            @sCode = @sCode OUTPUT

    SELECT @idCli as N'@idCli',
           @sCode as N'@sCode'  

    FETCH NEXT FROM CUR INTO @NumberPhone 

    SELECT 'Return Value' = @return_value
END

CLOSE CUR 
DEALLOCATE CUR

此代码与select查询的行数重复相同的结果。

您的代码具有

FETCH NEXT FROM CUR INTO @NumberPhone 
您的代码在循环中有一个fetch

FETCH NEXT FROM CUR INTO @sLigneAssValue
您不想进入
@NumberPhone
变量的下一个吗


@NumberPhone
变量永远不会更改。

您要执行哪个过程?缺少名称?您在第一轮中使用的是
@NumberPhone
,但在第二轮中使用的是
@sLigneAssValue
,您可能根本不需要光标?根据该过程所做的工作,光标很可能是减慢此过程的唯一方法。请不要像编写sql server那样开始编写代码。请当我发布我的代码时,我犯了一个错误,这是为什么,我有两个varibale,但不相同,但我编辑了我的代码,然后我更改了它。问题是:已执行过程的结果始终是相同的结果,因为它将所选第一行的数字电话传递给该过程,而未传递给下一行,以此类推