鉴于通过表的每一行中的另一个表使用游标循环和更新行这条SQL语句:光标在sqlsrv_query不工作
DECLARE @x varchar(100)
DECLARE @y varchar(100)
DECLARE c CURSOR FOR
SELECT col1, col2 FROM table
OPEN c
FETCH NEXT FROM c INTO @x, @y
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE table2 SET cola = @x WHERE colb = @y
FETCH NEXT FROM c INTO @x, @y
END
CLOSE c
DEALLOCATE c;
如果我直接SQL控制台或Navicat的范围内运行该语句,一切都按预期工作。但是,如果我使用PHP运行它:
sqlsrv_query($sql)
只有table2中的某些行实际上被更新。看起来SQL语句中的游标没有正确执行,或许sqlsrv_query在语句的游标仍在运行时返回?
有没有办法指示sqlsrv_query'等待',直到语句完全执行完成才返回结果?
您是否考虑过存储过程? – podiluska
我不想创建一个,但可能需要尝试。 – rmirabelle