FOR SELECT em sql server

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

FOR SELECT em sql server

Mensagempor fyngr » Sexta Jul 13, 2007 11:41

boas,

tenho uma pequena duvida, no sql server dá para fazer um for select?

cumps
Avatar do Utilizador
fyngr
Membro de Prata
Membro de Prata
 
Mensagens: 135
Registado: Segunda Out 03, 2005 16:31

Mensagempor Triple » Sexta Jul 13, 2007 12:27

Não. Quando fazes por exemplo:

Código: Seleccionar todos
$sql = "SELECT * FROM tabela WHERE campo = 10";
$query = mysql_query($sql) or die ("Erro");


São selecionados todos os registos onde o "campo" é igual a 10, depois para selecionares um a um fazes por exemplo:

Código: Seleccionar todos
while($n = mysql_fetch_array($query)){
$var = $n["campo1"];
$var2 = $n["campo2"];
}


Acho que era isto que querias.

Cumps
Triple
Membro de Ouro
Membro de Ouro
 
Mensagens: 650
Registado: Sexta Jun 24, 2005 14:27

Mensagempor fyngr » Sexta Jul 13, 2007 12:42

não era bem isso,
é o seguinte, vou lancar uma factura, tenho de dar baixa desse artigo no armazem, mas se for um artigo composto, tenho de dar baixa em todos os artigos que constituem o artigo composto, queria fazer tudo na stored procedure, e o for select daria mt jeito...há alguma sintaxe para o while?
sei q no firebird há o For Select que aqui daria jeito...
Avatar do Utilizador
fyngr
Membro de Prata
Membro de Prata
 
Mensagens: 135
Registado: Segunda Out 03, 2005 16:31

Mensagempor Triple » Sexta Jul 13, 2007 12:52

http://www.oficinadanet.com.br/index.ph ... how&id=177

Tens o While mesmo no fim da pagina.

Cumps
Triple
Membro de Ouro
Membro de Ouro
 
Mensagens: 650
Registado: Sexta Jun 24, 2005 14:27

Mensagempor fyngr » Sexta Jul 13, 2007 13:14

thx
dessa forma tb nao da:\
cumps
Avatar do Utilizador
fyngr
Membro de Prata
Membro de Prata
 
Mensagens: 135
Registado: Segunda Out 03, 2005 16:31

Mensagempor Triple » Sexta Jul 13, 2007 13:19

Hmmm não dá? Então mas não precisavas de uma estrutura de repetição?

Cumps
Triple
Membro de Ouro
Membro de Ouro
 
Mensagens: 650
Registado: Sexta Jun 24, 2005 14:27

Mensagempor fyngr » Sexta Jul 13, 2007 13:26

sim, mas por exemplo
faco um select onde me lista os artigos compostos referente aquele artigo e preciso de ir a casa linha dessas tirar a quantidade e o artigo para descontar no stock.

com aquele while, tenho um loop, mas nao tenho maneira de entrar em cada linha, saber quais as quantidades e os ids dos artigos
Avatar do Utilizador
fyngr
Membro de Prata
Membro de Prata
 
Mensagens: 135
Registado: Segunda Out 03, 2005 16:31

Mensagempor Triple » Sexta Jul 13, 2007 14:19

Então depois fazes

Código: Seleccionar todos
SELECT campo FROM tabela


Isso retorna o valor do campo.

Cumps
Triple
Membro de Ouro
Membro de Ouro
 
Mensagens: 650
Registado: Sexta Jun 24, 2005 14:27

Mensagempor fyngr » Sexta Jul 13, 2007 15:09

sim, mas imagina que tenho 5 registos, como vou saber se estou no primeiro, que depois vou estar no segundo e por aí fora?
eu apenas tenho o id do artigo que por sua vez esta ligado a outra tabela que tem esses tais 5 registos
Avatar do Utilizador
fyngr
Membro de Prata
Membro de Prata
 
Mensagens: 135
Registado: Segunda Out 03, 2005 16:31

Mensagempor Triple » Sexta Jul 13, 2007 18:38

Essa tabela com os tais 5 registos tem um indice?

Código: Seleccionar todos
SELECT campo FROM tabela ORDER BY id ASC


Assim tens os 5 registos selecionados de forma ascendente pelo campo id.

Se quiseres descendente trocas o ASC por DESC

Cumps
Triple
Membro de Ouro
Membro de Ouro
 
Mensagens: 650
Registado: Sexta Jun 24, 2005 14:27

Mensagempor lquental » Segunda Jul 16, 2007 11:31

Penso que seja isto que queres:

Código: Seleccionar todos
CREATE PROCEDURE nome_sp
...
AS
BEGIN
...
DECLARE @codigo int,
DECLARE @nome varchar(20);

DECLARE Cursor_Artigos CURSOR FOR
SELECT codigo, nome FROM artigos;
OPEN Cursor_Artigos;
FETCH NEXT FROM Cursor_Artigos INTO @codigo;
WHILE @@FETCH_STATUS = 0
   BEGIN
      --Faz qualquer coisa aqui...

      FETCH NEXT FROM Cursor_Artigos;
   END;
CLOSE Cursor_Artigos;
DEALLOCATE Cursor_Artigos;
...
END


Para mais informações -> Google -> "SQL Server cursors"
lquental
Aprendiz
Aprendiz
 
Mensagens: 29
Registado: Terça Ago 23, 2005 14:03

Mensagempor fyngr » Segunda Jul 16, 2007 13:14

é isso mesmo!
obrigado, já ta a fazer o que queria!
thx cumps
Avatar do Utilizador
fyngr
Membro de Prata
Membro de Prata
 
Mensagens: 135
Registado: Segunda Out 03, 2005 16:31


Voltar para Programação

Quem está ligado:

Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante

cron