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
por fyngr » Sexta Jul 13, 2007 11:41
boas,
tenho uma pequena duvida, no sql server dá para fazer um for select?
cumps
-

fyngr
- Membro de Prata

-
- Mensagens: 135
- Registado: Segunda Out 03, 2005 16:31
-
por 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

-
- Mensagens: 650
- Registado: Sexta Jun 24, 2005 14:27
por 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...
-

fyngr
- Membro de Prata

-
- Mensagens: 135
- Registado: Segunda Out 03, 2005 16:31
-
por Triple » Sexta Jul 13, 2007 12:52
-
Triple
- Membro de Ouro

-
- Mensagens: 650
- Registado: Sexta Jun 24, 2005 14:27
por fyngr » Sexta Jul 13, 2007 13:14
thx
dessa forma tb nao da:\
cumps
-

fyngr
- Membro de Prata

-
- Mensagens: 135
- Registado: Segunda Out 03, 2005 16:31
-
por 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

-
- Mensagens: 650
- Registado: Sexta Jun 24, 2005 14:27
por 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
-

fyngr
- Membro de Prata

-
- Mensagens: 135
- Registado: Segunda Out 03, 2005 16:31
-
por 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

-
- Mensagens: 650
- Registado: Sexta Jun 24, 2005 14:27
por 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
-

fyngr
- Membro de Prata

-
- Mensagens: 135
- Registado: Segunda Out 03, 2005 16:31
-
por 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

-
- Mensagens: 650
- Registado: Sexta Jun 24, 2005 14:27
por 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

-
- Mensagens: 29
- Registado: Terça Ago 23, 2005 14:03
por fyngr » Segunda Jul 16, 2007 13:14
é isso mesmo!
obrigado, já ta a fazer o que queria!
thx cumps
-

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