Ir para conteúdo

POWERED BY:

Arquivado

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

berkowitz

Procedure que retorna valor

Recommended Posts

Fala galera! beleza?

Desculpem se é repetido mas nem sei como pesquisar! rs....

 

Eu tenho uma procedure de paginação e preciso que ela me retorne o número de páginas para eu poder utilizar num RecordSet ASP.

Hoje em dia eu estou fazendo com duas procs: uma de paginação e uma só para retornar a quantidade de páginas.

 

Acho que consegui alterar minha procedure de paginação para retornar a quantidade de páginas mas não sei como utilizar esse valor no ASP! Alguém pode me ajudar por favor?

 

Minha procedure alterada ficou assim:

CREATE PROC sp_SLinGar_Pag (
@paginaAtual INT,
@registros INT,
@garCod INT,
@areCod INT,
@empCod INT,
@linCod VARCHAR(4),
@totalPaginas INT OUTPUT
) AS
BEGIN

Set @totalPaginas = (SELECT CEILING(CONVERT(NUMERIC(20,10), ISNULL((SELECT COUNT(*) FROM VSLinGar (NOLOCK) WHERE GarCod = @garCod AND Arecod = @areCod AND Empcod = @empCod AND (linCod = @linCod OR @linCod IS NULL)), 0)) / @registros))

SELECT * FROM (
SELECT ROW_NUMBER() OVER(ORDER BY LinCod, TLiCod ASC) AS ID, LinCod, TLiCod
FROM VSLinGar (NOLOCK)
WHERE GarCod = @garCod AND Arecod = @areCod AND Empcod = @empCod and (linCod = @linCod or @linCod is null)
) AS linhas
WHERE id BETWEEN(((@paginaAtual - 1) * @registros) + 1) AND (@paginaAtual * @registros)

END

Não tenho certeza mas a chamada fica assim, correto?

...
rsQueryLinhas = "EXEC SP_SLinGar_Pag "&paginaAtual&","&registros&","&garCod&","&areaCod&","&empCod&",,@totalPaginas OUTPUT"
...

Obrigado!

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal... tive uma outra idéia e parece que funcionou.

Ao invés de utilizar o parâmetro de retorno OUTPUT decidi inserir o valor do cálculo como uma coluna da minha tabela. Fica mais fácil pra resgatar.

Ficou assim:

 

CREATE PROC sp_SLinGar_Pag2 (
@paginaAtual INT,
@registros INT,
@garCod INT,
@areCod INT,
@empCod INT,
@linCod VARCHAR(4)
) AS
BEGIN

Set @totalPaginas = (SELECT CEILING(CONVERT(NUMERIC(20,10), ISNULL((SELECT COUNT(*) FROM VSLinGar (NOLOCK) WHERE GarCod = @garCod AND Arecod = @areCod AND Empcod = @empCod AND (linCod = @linCod OR @linCod IS NULL)), 0)) / @registros))

SELECT *,@totalPaginas AS totalPaginas FROM (
	SELECT ROW_NUMBER() OVER(ORDER BY LinCod, TLiCod ASC) AS ID, LinCod, TLiCod
	FROM VSLinGar (NOLOCK)
	WHERE GarCod = @garCod AND Arecod = @areCod AND Empcod = @empCod AND (linCod = @linCod OR @linCod IS NULL)
) AS linhas
WHERE id BETWEEN(((@paginaAtual - 1) * @registros) + 1) AND (@paginaAtual * @registros)

END

Vou testar agora junto com o ASP, mas no SQL deu certo...

 

ABRAX!!!

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.