Ir para conteúdo

POWERED BY:

Arquivado

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

douglas_pr

transformando várias linhas em uma só coluna, utilizando cursor

Recommended Posts

Caros Amigos.

 

Bom pesquisei bastante antes que fazer essa pergunta, mais vamos la.

Criei um cursor que me retorna uma string com codigos preformatados entre virgulas, mesmo eu tendo definido a variável que recebe os dados como uma string concatenada o e resultado esta sendo truncado...

 

DECLARE

@iten VARCHAR(5),

@itens_concatenados VARCHAR(1000)

 

SELECT

@itens_concatenados = '',

 

DECLARE ITENS CURSOR FOR

SELECT COD_PROD

FROM PRODUTOS_DET

WHERE COD_CLIENTE = 16

ORDER BY COD_PROD

 

OPEN ITENS

 

FETCH ITENS INTO @iten

WHILE @@fetch_Status=0

BEGIN

set @itens_concatenados = @itens_concatenados + @iten + ','

FETCH ITENS INTO @iten

END

 

CLOSE ITENS

DEALLOCATE ITENS

 

SELECT CONTAGEM = @itens_concatenados

 

Basicamente, crio as variáveis ,inicializo o necessario, rodo a sql (essa sql me retorna mais de 100 rows) e recupero os dados concatenando na variável.

 

 

Já tentei ate criar uma tabela dinamica mais mesmo assim o resultado da variável esta sendo truncada, estou desconfiado que por padrão esse varchar(@itens_concatenados) tenha tamanho 256 pois é esse o tamanho resultande da variavel em questão. Uso o SQL SERVER 2000

 

Se algum souber de algo....

 

Contiunarei a pesquisar se eu mesmo descobrir .. posto minha resolução

 

Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola.

 

Esta tudo correto.

 

o SQL Esta apenas mostrando 256 caracteres isto você tem como ajustar, de uma oplhada em options do queryanalyser.

 

 

mas para ter 100 porcento de certeza, faca o seguinte teste:

 

COLOQUE A LINHA ABAIXO:

 

print cast(len(@itens_concatenados) as varchar(20))

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Karepa,

 

Na verdade eu já havia testado a sugestão de tamanho da string e me retornava o tamanho certo so que na hora de mostrar mostrava errado ... não havia nem me questionado sobre o query analyser ... PERFEITO !!! muito obrigado pela resposta.

 

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Amigo tente desta forma

 

DECLARE @iten VARCHAR(5),

@itens_concatenados NVARCHAR(1000)

 

SELECT

@itens_concatenados = '',

 

DECLARE ITENS CURSOR FAST_FORWARD FOR

SELECT COD_PROD

FROM PRODUTOS_DET

WHERE COD_CLIENTE = 16

ORDER BY COD_PROD

 

FOR READ ONLY

 

OPEN ITENS

 

FETCH ITENS INTO @iten

WHILE @@fetch_Status=0

BEGIN

set @itens_concatenados = @itens_concatenados + @iten + ','

FETCH ITENS INTO @iten

END

 

CLOSE ITENS

DEALLOCATE ITENS

 

SELECT CONTAGEM = @itens_concatenados

 

Espero q possa resolver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

a.smattos,

 

pode ateh resolver, mas chegou um pouco atrasado.

Por favor, evite postar em topicos muito antigos ;)

 

Abçs

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.