![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ2kRhikiAdl62kiyx9ybUJm0yFGi8THWaGIS35Q0Pwme8fwqOShNsk7c1SHg98u1Do0Ionxdp0P7X2u87bVgORi7EklHqshjRA-Mp6PoofUz_aRfKXDXJApeNT0qhIuBHdFt1x-HhJHSF/s200/il_sqlserver.jpg)
Abaixo segue um exemplo do uso do cursor para preencher uma tabela temporaria, atualizar, apagar e inserir dados em outras tabelas. Um cursor precisa ser declarado (passando a query que ele irá percorrer) e posteriormente aberto. Como todo ponteiro, inicialmente aponta pro vazio, então após aberto, é preciso usar o comando fetch next passando as variáveis que armazenarão os dados do cursor. A idéia de cursor lembra a de uma recordset. No final do laço while é necessário usar o fetch next novamente para que o cursor se mova para o proximo registro. Para finalizar é necessário fechar o apontador e depois desaloca-lo da memória.
CREATE TABLE #TEMP_VAL (CODIGO INT, CODIGO VARCHAR(50)) DECLARE @id AS INT, @user AS VARCHAR(50) DECLARE CUR_ADM CURSOR FOR SELECT id, username OPEN CUR_ADM FETCH NEXT FROM CUR_ADM INTOH NEXT FROM CUR_ADM INTO @id, @user WHILE @@FETCH_STATUS = 0 BEGIN IF @user = 'teste'END CLOSE CUR_ADM SELECT * FROM #TEMP_VAL DROP TABLE #TEMP_VAL DEALLOCATE CUR_ADM |
Utilizei no exemplo também uma tabela temporária para armazenar alguns dados e posteriormente apaguei usando o drop. Tabelas temporárias são criadas colocando o # ou ## na frente de seus respectivos nomes. O uso de 1 # ou 2 # é de acordo com a necessidade da aplicação.
Nenhum comentário:
Postar um comentário