Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

reyad

Exercício sobre Cursores

Recommended Posts

Hey pessoal!Eu estou a resolver o seguinte exercício...

Para todos os empregados é necessário alterar o titulo. Todos os empregados com titulo "Mr." Devem passar a ser "Exmo Sr.", e todos com "Ms." devem passar a "Exma. Sra.".

DECLARE @empregado varchar(50)DECLARE alterar_titulo CURSOR FOR SELECT TitleOfCourtesy FROM EmployeesOPEN alterar_tituloFETCH NEXT FROM alterar_titulo INTO @empregadoWHILE(@@FETCH_STATUS = 0)BEGIN	UPDATE Employees	SET TitleOfCourtesy = 'Exmo Sr.' WHERE CURRENT OF alterar_titulo	UPDATE Employees	SET TitleOfCourtesy = 'Exmo Sra.' WHERE CURRENT OF alterar_titulo	FETCH NEXT FROM alterar_titulo INTO @empregadoEND CLOSE alterar_tituloDEALLOCATE alterar_titulo
E tenho esta resolução para o exercício, mas assim ele modifica todos os "TitleOfCourtesy" colocando "Exmo Sra."Como faço para alterar apenas para o que pretendo... Tentei colocar no Where mas pelo que vi tenho de usar o CURRENT OF na condição WHERE :huh: Cumps.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum... Meio confuso esse código.Quais são a chaves da tabela Employees?é preciso de fazer um where no update antes de atualizar. Ele atualiza todos os registros com a ultima linha do SELECT TitleOfCourtesy FROM Employeesposte os campos e chaves da tabela que te passo a solução para esse problema.t++

Compartilhar este post


Link para o post
Compartilhar em outros sites

A chave da tabela Employees é EmployeeID, Paulo Afonso Cordeiro ;)

 

Eu penso que resolvi o problema...

 

Fiz a alteração do código para o seguinte:

 

DECLARE @title varchar(50)DECLARE change_title CURSOR FOR SELECT TitleOfCourtesy FROM EmployeesOPEN change_titleFETCH NEXT FROM change_title INTO @titleWHILE(@@FETCH_STATUS = 0)BEGIN	IF(@title = 'Mr.')		BEGIN			UPDATE Employees			SET TitleOfCourtesy = 'Exmo Sr.' WHERE CURRENT OF change_title		END	IF(@titulo = 'Ms.')		BEGIN			UPDATE Employees			SET TitleOfCourtesy = 'Exmo Sra.' WHERE CURRENT OF change_title		END	FETCH NEXT FROM change_title INTO @titleEND CLOSE change_titleDEALLOCATE change_title

Obrigado pela ajuda...

 

Cumps. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.