Ir para conteúdo
Fórum Script Brasil
  • 0

Como atribuir os dados retornados de uma consulta ?


Wander Bergami

Pergunta

5 respostass a esta questão

Posts Recomendados

  • 0
Bom dia Wander,

você pode ler os registros gravando-os em uma temporária e depois fazer o while. Para navegar pela tabela temporária, poderá criar uma coluna identity.

Qualquer dúvida, pode postar. :.)

O problema esta no seguinte estou precisando desenvolver uma function que pega os codcliente de uma tabela e não sei como ler esses registros em transact.

Percorrendo os registros retornados

Obrigado

Editado por Wander Bergami
Link para o comentário
Compartilhar em outros sites

  • 0

Obs.: Essa rotina iria ser um job

Estava lendo a respeito de cursor ... mais acho que ele não pode ser usado dentro de uma função.

O que eu precisava era:

1 - Saber quais clientes possuem um determinado registro no mês X. O retorno seria duas colunas com vários registros.

2 - Aí que vem a Dúvida como posso ler os registros direto do banco ?

3 - Cada linha me daria o código do cliente e a quantidade de registros que ele possui no mês.

4 - Assim por exemplo cod = 25 possui 15 registros.

While i < 15

Set @Soma_pagamento = @Soma_pagamento + select * from Lancamentos where codcliente = 15 and mes = '05' and tipo = 'P' and codLancamento = Y

Set @Soma_recebimento = @Soma_recebimento + select * from Lancamentos where codcliente = 15 and mes = '05' and tipo = 'R' and codLancamento = Y

end

Set @resultado = @Soma_recebimento - @Soma_pagamento

5 - Com posse dessa informação eu faria uma inclusão em uma tabela se o saldo for negativo

Mais eu tenho que entregar essa solicitação logo então vou dividir com a aplicação e criar um flag para não carregar o banco de forma desnecessária.

Obrigado pela atenção!

Link para o comentário
Compartilhar em outros sites

  • 0

Prefira sempre utilizar o WHILE ao invés de Cursor. Os cursores consomem muita memória e processamento.

No exemplo que passou, creio que a função SUM resolveria o problema para realizar a soma, ao invés de ficar somando os valores em variável.

Segue um exemplo e algumas explicações. Dê uma olhada e vê se entende. A tabela criada é uma temporária em instância. Enquanto a instância existir, ela existirá. Após fechar a instância, ela será excluida.

Qualquer dúvida, pode postar.

-- Criação de temporária em instância
create table #ClienteRegistros (CodCliente varchar(100), Controle int Identity)

-- Inserção dos dados na temporária. Aqui você faz o select contendo apenas o código do cliente
insert into #ClienteRegistros (CodCliente)
select CodCliente from .....

-- Declaração de variável
declare @resultado float
declare @CodCliente int
declare @Controle int

-- Setando contador
Set @Controle = 1

-- Loop para pegar o código do cliente e fazer a (SOMA DO RECEBIMENTO - SOMA DO PAGAMENTO).
-- Perceba que não cloquei os meses. Fiz o soma do total do cliente.
-- Caso necessite do mês, poderá criar mais uma variável para isto.

While @Controle <= (select max(Controle) from #ClienteRegistros)
Begin
  -- Seleciona o codigo do cliente que irá realizar o calculo
  Set @CodCliente = (select CodCliente from #ClienteRegistros where controle=@Controle)
  
  -- Faz o calculo.
  Set @resultado = ((select SUM(ColunaValores) from Lancamentos where codcliente = @CodCliente and tipo = 'R' and codLancamento = Y) -
  (select SUM(ColunaValores) from Lancamentos where codcliente = @CodCliente and tipo = 'P' and codLancamento = Y))

  -- Se for negativo, grava a informação.
  if @resultado < 0
  update TABELA set COLUNA = @resultado where .....

  Set @Controle = @Controle + 1 
End

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...