Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

supernoi

[Resolvido] Função Top

Recommended Posts

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:

- Adicionar/excluir a função top quando preenchida ou não.

- Passar o valor do campo.

 

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)

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 table #tabela (id int, nome varchar(200), endereco varchar(300))
insert into #tabela values (1,'Junior','Rua A - Sao Paulo')
insert into #tabela values (2, 'Supernoi','Nao mora se esconde')


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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A.Jr,

 

Agradeço, esquenta não que não perdeu nada vendo o contexto completo. rsrs

E SQLServer2k é muito cruel mesmo...

 

=P

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.