Wander Bergami Postado Junho 17, 2010 Denunciar Share Postado Junho 17, 2010 Bom dia pessoal !Estou precisando ler os registros de uma tabela após uma consulta...SELECT DISTINCT(CODEMPRESA) FROM GEST_001 WHERE MES = @MES_PESQUISADO ... e depois fazer um while com os registros.Alguém pode me ajudar ?Obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Junho 17, 2010 Denunciar Share Postado Junho 17, 2010 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. :.) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wander Bergami Postado Junho 17, 2010 Autor Denunciar Share Postado Junho 17, 2010 (editado) 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 Junho 17, 2010 por Wander Bergami Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Junho 17, 2010 Denunciar Share Postado Junho 17, 2010 você está querendo fazer uma função em sql para pegar os códigos de clientes. Depois disso, o que deseja fazer? Caso prefira, coloque um exemplo de dados. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wander Bergami Postado Junho 17, 2010 Autor Denunciar Share Postado Junho 17, 2010 Obs.: Essa rotina iria ser um jobEstava 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 = Yend Set @resultado = @Soma_recebimento - @Soma_pagamento5 - Com posse dessa informação eu faria uma inclusão em uma tabela se o saldo for negativoMais 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Junho 17, 2010 Denunciar Share Postado Junho 17, 2010 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Wander Bergami
Bom dia pessoal !
Estou precisando ler os registros de uma tabela após uma consulta...
SELECT DISTINCT(CODEMPRESA) FROM GEST_001 WHERE MES = @MES_PESQUISADO
... e depois fazer um while com os registros.
Alguém pode me ajudar ?
Obrigado.
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
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.