Pablo.Softgraf Posted August 16, 2017 Report Share Posted August 16, 2017 Senhores, boa tarde ! Estou querendo fazer um cursor no SQL SERVER para controlar e travar uma tabela , em sua atualização. consigo usar o RLOCK() no SQLRDD, trava totalmente, tanto que no modo interativo do SQLSERVER, não sai enquanto não finalizar o RLOCK, enfim, gostaria de saber se alguém já fez o processo reverso, não consigo LOCKAR com o CURSOR, não surte efeito no SQLRDD. Ja tentei com "FOR UPDATE" também não vai. DECLARE complex_cursor CURSOR FOR SELECT NUMPG FROM CR_PARAM WITH (ROWLOCK); OPEN complex_cursor; FETCH FROM complex_cursor; UPDATE CR_PARAM SET NUMPG = NUMPG + 1 WHERE CURRENT OF complex_cursor; CLOSE complex_cursor; DEALLOCATE complex_cursor; Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted August 17, 2017 Report Share Posted August 17, 2017 Amigo pelo que sei não existe este procedimento para SQL, somente para dbf. Acredito que vc precisa begin transaction, commit ou rollback. Quote Link to comment Share on other sites More sharing options...
Pablo.Softgraf Posted August 17, 2017 Author Report Share Posted August 17, 2017 Bom dia , JMSilva, obrigado pela atenção da resposta. No próprio SQL SERVER, se abrir duas instancias no modo interativo, consigo chegar no resultado esperado. Agora, deve existir , senão o RLOCK não travaria o registro no SQL SERVER, tanto que consegui fazer. só preciso saber a maneira correta. com certeza o RLOCK deve simular algum comando , estou tentando visualizar pelo DATA ANALYSER do mesmo, mas não to conseguindo instalar. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 17, 2017 Report Share Posted August 17, 2017 Algo assim? USE AdventureWorks2008R2;GODECLARE complex_cursor CURSOR FOR SELECT a.BusinessEntityID FROM HumanResources.EmployeePayHistory AS a WHERE RateChangeDate <> (SELECT MAX(RateChangeDate) FROM HumanResources.EmployeePayHistory AS b WHERE a.BusinessEntityID = b.BusinessEntityID) ;OPEN complex_cursor;FETCH FROM complex_cursor;DELETE FROM HumanResources.EmployeePayHistoryWHERE CURRENT OF complex_cursor;CLOSE complex_cursor;DEALLOCATE complex_cursor;GO Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 17, 2017 Report Share Posted August 17, 2017 https://technet.microsoft.com/pt-br/library/ms188713(v=sql.105).aspx https://stackoverflow.com/questions/4504818/basic-syntax-on-for-update-cursor https://github.com/antlr/grammars-v4/blob/master/tsql/examples/dml_delete.sql Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.