如何循环执行SELECT sql语句的结果并将结果用于存储过程?
我想使用游标将select查询的结果用于存储过程,但它不起作用 这是我的密码:如何循环执行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
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,但不相同,但我编辑了我的代码,然后我更改了它。问题是:已执行过程的结果始终是相同的结果,因为它将所选第一行的数字电话传递给该过程,而未传递给下一行,以此类推