Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde,
Tenho que gerar umas procedures para exibir uns "relatórios aleatórios", sem Pé e muito menos cabeça porque as perguntas não fazem nenhum sentido muito menos as respostas. Mas enfim sou pago para isso.
Vamos a diversão:
Na janela da aplicação terá um campo que onde o usuário ira informar o valor de resultados que devem ser exibidos.
O desenvolvedor perguntou se tem como fazer isso direto na procedure.
Imaginei logo um TOP, missão:
1.Quando o campo não for preenchido então "Exibir tudo".
2.Passar o valor do campo para a função top.
Mas os desafios são:
Conclusão: fazer uma gambiarra.
Ideia que tive, foi de receber o valor por parametro, se null não adiciona nada no Select, se-não adicionar o TOP + Valor e jogar no select
Estou tendo problemas com o TOP pois ele passa como String... =/
Alguém já teve algum problema parecido?
Ou alguma ideia para resolver? rsrs
Ambiente:
DB: Microsoft SQL Server Standard Edition - 8.00.2282
SO: Microsoft Windows NT 5.2 (3790)
Vlw A.Jr,
Resolvi adicionando:
"@vtop smallint=null" e "set rowcount @vtop"
antes de cada query,
São diversas querys uma para cada situação.
Com set rowcount funcionou legal. =)
Vlw
Entao, como nao tinha todo ocontexto do seu problema, postei um generico. Mas SQL2000 tambem eh cruel nao?! Que otimo que funcionou!!! Abcs e boa sorte!!
A.Jr,
Agradeço, esquenta não que não perdeu nada vendo o contexto completo. rsrs
E SQLServer2k é muito cruel mesmo...
=P
>
1.Quando o campo não for preenchido então "Exibir tudo".
2.Passar o valor do campo para a função top.
Conclusão: fazer uma gambiarra.
MInha contribuição para o seu "monstrinho"
create procedure #teste (@valor varchar(20))
as
if @valor is null
begin
select top 100 percent * from #tabela
end
else
begin
declare @sql varchar(300)
set @sql = 'select top '+ @valor+' * from #tabela'
exec (@sql)
end
exec #teste null
exec #teste 1
Nos EXEC pode-se passar o valor necessario.... como eh sql2000 acho que pode-se usar o newid() para randomizar ainda mais.
Abçs