MATRIZ NO SQL

VPVJUNIOR 26/11/2006 13:04:27
#186269
Galera tem como criar uma matriz em uma store procedura no sql? se tem como seria? Obrigado, valeu
CLEVERTON 26/11/2006 16:41:28
#186281
Citação:

VPVJUNIOR escreveu:
Galera tem como criar uma matriz em uma store procedura no sql? se tem como seria? Obrigado, valeu



Matriz ???

Cara, creio que não seja possível, mas informe melhor o que vc pretende fazer, talvez achamos outra solução.
VPVJUNIOR 27/11/2006 09:30:03
#186350
é seguinte:

estou querendo armazenar 2 campos do resultado de um select através de um while, como faço? por isso a idéia de criar uma matriz com 2 elementos.
USUARIO.EXCLUIDOS 27/11/2006 10:49:39
#186384
Carinha, poderia ser mais específico? Usar matriz não tem como... mas de repente a gente acha uma alternativa!
VPVJUNIOR 27/11/2006 12:51:51
#186442
Deixe tentar explicar melhor.

Qero fazer isso no SQL:

Set RS1 = New adodb.Recordset
RS1.Open "SELECT Count(*) as QTD FROM ARTIGOS", DBCon,
Dim Conta as integer
Dim Campos(RS1!QTD,2) as String
Set RS1 = New adodb.Recordset
RS1.Open "SELECT COD_PRODUTO,COD_SETOR FROM ARTIGOS", DBCon, adOpenKeyset, adLockOptimistic
Conta=1
RS1.MoveFirst
While Not RS1.EOF
Campos(Conta,1)=RS1!COD_PRODUTO
Campos(Conta,2)=RS1!COD_SETOR
Conta = Conta + 1
RS1.MoveNext
Wend

Teria como galera, espero ter esclarecido melhor,valeu
USUARIO.EXCLUIDOS 27/11/2006 12:56:21
#186445
Para isso não tem como fazer em Stored Procedure, mas vc poderia criar uma tabela temporária e armazenar esses dois campos. Fora isso, só controlando pelo programa mesmo!
USUARIO.EXCLUIDOS 27/11/2006 18:39:32
#186601
Cara, pq que ao invés de usar o COUNT vc não usa o RecourdCount do recordset:
rst.CursorLocation = adUseClient
rst.RecordCount

Dim Conta as integer
Dim Campos(0 ,2) as String
Set RS1 = New adodb.Recordset
RS1.CursorLocation = adUseClient
RS1.Open "SELECT COD_PRODUTO,COD_SETOR FROM ARTIGOS", DBCon, adOpenKeyset, adLockOptimistic
ReDim Campos(RS1.RecordCount, 2) As String
RS1.MoveFirst
For Conta = 1 To rst.RecourdCount
Campos(Conta,1)=RS1!COD_PRODUTO
Campos(Conta,2)=RS1!COD_SETOR
RS1.MoveNext
Next Conta


Teste aí e qualquer dúvida poste...flw
USUARIO.EXCLUIDOS 27/11/2006 23:06:40
#186638
Mas Magayver, ele quer fazer isto em uma Stored Procedure no SQL Server, não em VB.
ELUCIMAR 28/11/2006 07:41:59
#186656
Resposta escolhida
Fiz um pequeno prototico utilizando o Banco de Dados de Exemplo Northwind

ECLARE @CodigoProduto INT
DECLARE @DescricaoProduto Varchar(100)
DECLARE @QuantReg INT
DECLARE @TabMatriz TABLE(CodigoProduto Int,DescricaoProduto Varchar(100))

DECLARE Rs CURSOR FOR
SELECT ProductId,ProductName
FROM Products

OPEN Rs
FETCH NEXT From Rs INTO @CodigoProduto,@DescricaoProduto
WHILE @@FETCH_STATUS = 0
BEGIN
SET @QuantReg = ISNULL(@QuantReg,0) + 1
INSERT INTO @TabMatriz(CodigoProduto,DescricaoProduto)
SELECT @CodigoProduto,@DescricaoProduto
FETCH NEXT From Rs INTO @CodigoProduto,@DescricaoProduto
END
CLOSE Rs
DEALLOCATE Rs

Select * FROM @TabMatriz
Select @QuantReg as QuantidadeRegistros


Ou senão você pode utiliza este exemplo do MVP Marcelo Colla (mcolla)
http://www.forumweb.com.br/artigos/artigos.php?action=file&id=321
VPVJUNIOR 04/12/2006 12:07:34
#187788
ELUCIMAR,

baseado nesse seu exemplo, consegui extrair alguns comando que me foram úteis, podendo assim solucionar meu problema sem ter que usar uma tabela temporária.

Valeu e obrigado a todos que tentaram me ajudar.
Tópico encerrado , respostas não são mais permitidas