Parametro is null
Boa noite a todos!
Estou com uma duvida como proceder, estou desenvolvendo um relatório onde um campo da tabela não inseríamos informações, pois agora para identificar alguns lançamentos iremos utilizar o mesmo, porem esse mesmo campo irá ser parâmetro do relatório.
Para que mostre a informação da linha preciso utilizar o comando,como agora o campo irá ter valores inseridos nele então preciso que quando o parâmetro ficar em branco trazer os campos que não tenha informações e quando o parâmetro for informado trazer o dados referente ao parâmetro,alguém sabe como proceder nesse caso.
Desde já agradeço
Estou com uma duvida como proceder, estou desenvolvendo um relatório onde um campo da tabela não inseríamos informações, pois agora para identificar alguns lançamentos iremos utilizar o mesmo, porem esse mesmo campo irá ser parâmetro do relatório.
Para que mostre a informação da linha preciso utilizar o comando
select * from tabela where campo is null
Desde já agradeço
Kaio
Curtidas 0
Respostas
Marisiana Battistella
18/06/2015
Você pode criar um procedimento que receba esse parâmetro e nele realizar essa verificação. Seria +ou- assim:
IF v_parametro IS NULL THEN
select * from tabela where campo is null;
ELSE
select * from tabela where campo = v_paramentro;
END;GOSTEI 0
Jothaz
18/06/2015
Acredito que a resposta da Marisiana é muito superior a que eu iria sugerir, mas para mais informações veja este post que fiz a muito tempo numa galáxia bem distante.
[url:descricao=IS NULL ou ISNULL()? Eis a questão!]http://forum.imasters.com.br/topic/225194-resolvido-is-null-ou-isnull-eis-a-questao/[/url]
o exemplo no final mostra como usar o isnull de forma dinâmica, você pode passar ou não o parâmetro que a query retorna o valor.
[url:descricao=IS NULL ou ISNULL()? Eis a questão!]http://forum.imasters.com.br/topic/225194-resolvido-is-null-ou-isnull-eis-a-questao/[/url]
o exemplo no final mostra como usar o isnull de forma dinâmica, você pode passar ou não o parâmetro que a query retorna o valor.
GOSTEI 0
Marisiana Battistella
18/06/2015
Interessante Jothaz!
Existem várias formas de tratar uma situação assim, tudo depende de analisar qual melhor se aplica.
Essa forma que apresentei pode ser utilizada em casos em que as duas situações devem uma regra diferente para retornar os dados.
Se o que muda é apenas a situação " where campo is null ", poderia utilizar uma variável para completar o filtro.
Nesse caso a variavel deve receber o valor " IS NULL" ou " = parametro "
Já utilizei isso para resolver uma situação onde eu precisava rodar o mesmo SQL para 3 situações o diferentes, sendo que para cada situação deveria ou não aplicar um filtro a mais na consulta. Essa situação de passar ou não o filtro eu tratei na aplicação...
Existem várias formas de tratar uma situação assim, tudo depende de analisar qual melhor se aplica.
Essa forma que apresentei pode ser utilizada em casos em que as duas situações devem uma regra diferente para retornar os dados.
Se o que muda é apenas a situação " where campo is null ", poderia utilizar uma variável para completar o filtro.
select t.campo from tabela t where t.campo v_variavel;
Nesse caso a variavel deve receber o valor " IS NULL" ou " = parametro "
Já utilizei isso para resolver uma situação onde eu precisava rodar o mesmo SQL para 3 situações o diferentes, sendo que para cada situação deveria ou não aplicar um filtro a mais na consulta. Essa situação de passar ou não o filtro eu tratei na aplicação...
GOSTEI 0
Jothaz
18/06/2015
Pois é Marisiana, hoje quando tenho o privilégio de desenvolver uso o bd como repositório, quase toda as regras de negócio e maioria da manipulação de dados deixo na aplicação. Claro que nunca sou desleixado com a modelagem.
Ainda mais se for utilizar .Net MVC ou Ruby, assim a aplicação fica realmente independente do banco de dados o que facilita a migração e atender a qualquer cenário.
O post em questão foi feito em 23 abril 2007, nesta época até mesmo os mecanismos de bd não estavam tão aprimorados, as linguagens/tecnologias de desenvolvimento estavam no seu limiar, os processadores de maior capacidade eram Pentium II e memórias custavam os olhos, ruins, coração e a alma. Desenvolver para web era bem complicado.
Então, dependendo do cenário, abordagens como a proposta pelo post eram usuais e funcionais. Você retirava o trabalho da aplicação e deixava a cargo do bd.
Postei o link só mesmo como base de conhecimento, talvez hoje serve de exemplo de como não abordar o assunto. kkk
E deixei o aviso que foi feito:
"A long time ago, in a galaxy far,
far away...."
Ainda mais se for utilizar .Net MVC ou Ruby, assim a aplicação fica realmente independente do banco de dados o que facilita a migração e atender a qualquer cenário.
O post em questão foi feito em 23 abril 2007, nesta época até mesmo os mecanismos de bd não estavam tão aprimorados, as linguagens/tecnologias de desenvolvimento estavam no seu limiar, os processadores de maior capacidade eram Pentium II e memórias custavam os olhos, ruins, coração e a alma. Desenvolver para web era bem complicado.
Então, dependendo do cenário, abordagens como a proposta pelo post eram usuais e funcionais. Você retirava o trabalho da aplicação e deixava a cargo do bd.
Postei o link só mesmo como base de conhecimento, talvez hoje serve de exemplo de como não abordar o assunto. kkk
E deixei o aviso que foi feito:
"A long time ago, in a galaxy far,
far away...."
GOSTEI 0
Marisiana Battistella
18/06/2015
Eu acho que depende das tecnologias que se está utilizando e do trabalho que se está desenvolvendo.
Por exemplo, se estiver utilizando Oracle, torna-se muito mais viável deixar a maior parte do processamento para o BD e "aliviar" a aplicação.
Por exemplo, se estiver utilizando Oracle, torna-se muito mais viável deixar a maior parte do processamento para o BD e "aliviar" a aplicação.
GOSTEI 0
Jothaz
18/06/2015
Eu acho que depende das tecnologias que se está utilizando e do trabalho que se está desenvolvendo.
Por exemplo, se estiver utilizando Oracle, torna-se muito mais viável deixar a maior parte do processamento para o BD e "aliviar" a aplicação.
Por exemplo, se estiver utilizando Oracle, torna-se muito mais viável deixar a maior parte do processamento para o BD e "aliviar" a aplicação.
Para variar vamos de clichê, tudo depende do cenário.
E claro talvez tenha me expressado mal quando me referir ao tratamento de dados ser feito na aplicação. Claro se você gasta uma fortuna em SGBD e não utilizar seus recursos, no mínimo você esta viajando na maionese. O filtros e ordenções principais e até algum processamento não tem como fugir é da alçada do DB. Assim você filtra o seu "datasnap".
Agora com o advento de tecnologias como o AngularJS e knockout unidos a serialização dão uma facilidade, robustez e desempenho na manipulação de dados que você nem nota a falta de SGBD. Com a vantagem de efetuar tudo na memória (e hoje memória não é problema) além de desonerar a rede.
É algo trivial e que se aplica a todos os cenários? Certamente não. Mas com conhecimento e planejamento é bem factível. Claro que isto só será possível sem negligenciar a modelagem de dados e classes.
Sou das antigas e gosto dos SQGBD´s (principalmente Oracle e estou gostando muito do SQL Server) relacionais e Stored Procedures, então o que vou dizer é quase um sacrilégio, mas após você trabalhar com um banco de dados NoSQL, ou mesmo orientado a objetos, a sua visão muda. E sinceramente depois que abri a mente para outras abordagens considero que houve uma evolução na forma como vejo as coisas.
GOSTEI 0
Marisiana Battistella
18/06/2015
Eu entendi tua visão Jothaz.. =D Meu comentário não foi para contrariar o que você disse, quis complementar.
Eu ouço o meus colegas comentando sobre algumas tecnologias e apesar de não usar no meu trabalho, ao menos tento saber que existe e pra que serve.
Eu ouço o meus colegas comentando sobre algumas tecnologias e apesar de não usar no meu trabalho, ao menos tento saber que existe e pra que serve.
GOSTEI 0
Jothaz
18/06/2015
Eu entendi tua visão Jothaz.. =D Meu comentário não foi para contrariar o que você disse, quis complementar.
Eu ouço o meus colegas comentando sobre algumas tecnologias e apesar de não usar no meu trabalho, ao menos tento saber que existe e pra que serve.
Eu ouço o meus colegas comentando sobre algumas tecnologias e apesar de não usar no meu trabalho, ao menos tento saber que existe e pra que serve.
Marisiana você com sua doçura e educação nunca me contraria, muito antes pelo contrário sempre tenho sua palavras como relevantes e pertinentes.
Talvez meus post´s sejam áridos, mas não faço por mal ou mesmo por estar melindrado, acho que é porque tenho um tendência a ser pragmático.
Podemos até divergir em nossa visão o que acho necessário e produtivo, mas nossos objetivos são os mesmo aprimorar nossos conhecimentos e neste processo ajudar a outras pessoas.
Não sou um bom escritor e as vezes em expresso mal, então me perdoe qualquer deslize.
Você é das pessoal por quem nutro um admiração genuína e além de tudo é uma lady. Então sua opinião é sempre bem vinda e ainda pretendo aprender muito você.
GOSTEI 0
Marisiana Battistella
18/06/2015
Obrigada Jothaz!
Você é sempre bem objetivo em expressar tua opinião e sua participação sempre agrega muito aos posts do fórum!
Você é sempre bem objetivo em expressar tua opinião e sua participação sempre agrega muito aos posts do fórum!
GOSTEI 0