Inquiridor
AJUDA: Usar IF e LOOP no lugar de case e while

Pergunta
-
Delimiter // Create procedure nome_processo() Begin Declare cod, cod_c, aux_cod varchar(11) Declare acum_c, val decimal(10,2); Declare composição cursor for Select cod_s, cod_s_c, s.valor From serviço as s, eh_composte as ec Where s.cod_s = ec.cod_s and s.cod_s = ec.cod_s_c Order By cod_s, cod_s_c; Set acum_c = 0; Open composição; Fetch composição into cod, cod_c, val; While found_rows()do While aux_cod = cod do Set acum_c = acum_c + val; Fetch composição into cod, cod_c, val; End while; Case When acum_c>1000,00 then select ('>1000,00'); When acum_c<=1000,00 then select ('<=1000,00'); Else select ('composição inválida); End case; Set acum_c=0; Set aux_cod = cod; End while; Close composição; End // Delimiter
Preciso reescrever um programa substituindo o case e while por if e loop... Sou iniciante na linguagem ainda, por isso peço a ajuda de vcs.
Todas as Respostas
-
Bruno,
Mas qual seria o motivo, sendo que, o While utilizado no SQL Server tem a função de funcionar como Loop!!!!
O Case é um operador lógico condicional que possui a função similar ao IF!!!!
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário] -
Isso q eu gostaria de saber tbm!
O programa é um exercicio q eu tenho q reescrever mudando um operador pelo outro, porém pelo q eu entendi ate agora do pouco q aprendi é q nesse caso não dá muita diferença trocar um pelo outro.. estou errado?
Afinal, se eu trocar um operador pelo outro, vai dar na mesma??? -
Bruno,
Basicamente não existe diferenças a olho nu, o que teriamos que fazer é analisar o plano de execução do SQL Server para procurar identififcar possíveis melhores ou condições de uso do IF, Case e While.
Agora uma observação é importante, você esta utilizando Cursor, este recurso é fantástico em relação a sua praticidade, mas é um grande vilão em relação a performance!!!!
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário]