鑑於通過表的每一行中的另一個表使用遊標循環和更新行這條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