Array
(
)

Funcao Case em Stored Procedure, qual a sintaxe?

Macario
   - 23 set 2006

Ola.

Alguem tem uma dica de como eu posso solucionar o seguinte caso.

Tenho 12 campos que referenciam aos 12 meses do ano (VLR1..Vlr12) numeric (16,6)

Preciso atribuir o valor da venda ao seu referido mes(no caso o campo).

obtenho o mes da venda: set @IMES = month(@NOTA_DATA)

como faço pra lancar no campo correspondente?

#Código

 case @IMES = 
  when 1 then set VLR1 = @VALOR
  when 2 then set VLR2 = @VALOR
 end



Seria algo assim?

Mas isso nao esta funcionando
O case nao esta sendo reconhecido na SP.

grato.

[]´s

:roll:

Psergio.p
   - 26 set 2006

Caro amigo, não entendi bem o que você precisa, poderia explicar melhor e postar a estrutura da sua tabela?

Raserafim
   - 27 set 2006

tente algo neste sentido:
#Código

 case
  when @IMES = 1 then (update nometabela set VLR1 = @VALOR)
  when @IMES = 2 then (update nometabela set VLR2 = @VALOR)
  ...
 end


Macario
   - 27 set 2006


Citação:
Caro amigo, não entendi bem o que você precisa, poderia explicar melhor e postar a estrutura da sua tabela?


Ola.

Eu estou gerando um relatorio de vendas anuais.

Vou citar um exemplo basico que nao reflete todo o codigo da SP em questao.

Dentro da SP faco o seguite.

#Código

declare CURSOR_TEMP cursor local fast_forward for
  select CLIENTE, NOTA, DATA, VALOR from TABNOTAS



Que me retorna o seguinte:
#Código
CLIENTE---->NOTA---->DATA---------VALOR
0000001---->01010--->10/07/2006--100
0000001---->02010--->10/08/2006--200
0000002---->03010--->11/09/2006--300


Tenho 12 variaveis para poder ´jogar´ o valor da nota no mes de referencia(campo DATA)

Por exemplo a nota 02010 o valor vai para a

if(@MES= 8)
set @VLR8 = VALOR

Entao depois eu faco um update na tabela com o valor no mes de venda.

O que esta acontecendo e que dentro da SP estou testando o mes atravez de 12 IF´s

Acredito que exista uma maneira mais pratica e logica para esta situacao.

espero ter esclarecido melhor minha necessidade.

Psergio.p
   - 28 set 2006

Você já está usando if então?