mostrar numero do registro no sql
Oi gente... Vamos lá...
Usando Firebird...
ClientDataSet1.CommandText:=´select * from tabela´ tenho os registros da tabela e posso pegar o número de cada registro com o ClientDataSet1.Recno.
Gostaria de saber é se tem como selecionar o número do registro dentro do próprio comando sql. Algo como: ´select tabela.registro, tabela.* from tabela´.
Existe algum comando sql que retorne o número do registro?
Usando Firebird...
ClientDataSet1.CommandText:=´select * from tabela´ tenho os registros da tabela e posso pegar o número de cada registro com o ClientDataSet1.Recno.
Gostaria de saber é se tem como selecionar o número do registro dentro do próprio comando sql. Algo como: ´select tabela.registro, tabela.* from tabela´.
Existe algum comando sql que retorne o número do registro?
Catunda
Curtidas 0
Melhor post
Bico
09/06/2008
Boa tarde.
Colega, a única forma que eu encontrei de resolver o problema que você está enfrentando foi a seguinte:
Criei um generator:
Antes de rodar a consulta que precisa da coluna com o número da linha eu seto o generator para 0:
E na consulta SQL eu uso a função GEN_ID para incrementar o generator:
Espero ter ajudado.
Qualquer dúvida, dá um grito aí.
Atenciosamente,
Fernando.
Colega, a única forma que eu encontrei de resolver o problema que você está enfrentando foi a seguinte:
Criei um generator:
CREATE GENERATOR NUMERO_DA_LINHA;
Antes de rodar a consulta que precisa da coluna com o número da linha eu seto o generator para 0:
SET GENERATOR NUMERO_DA_LINHA TO 0;
E na consulta SQL eu uso a função GEN_ID para incrementar o generator:
SELECT P.RAZ_SOC, GEN_ID(NUMERO_DA_LINHA, 1)"NUMERO_DA_LINHA" FROM PESSOA P
Espero ter ajudado.
Qualquer dúvida, dá um grito aí.
Atenciosamente,
Fernando.
GOSTEI 1
Mais Respostas
Javapaulomg
08/06/2008
Acho que ´Count´ resolveria. Semelhante a ´select count(*) from tabela´.
GOSTEI 0
Paulo
08/06/2008
O que ele quer não é isso, mas sim acessar um determinado registro equivalente a uma determinada posição. Ex: Se a linha XXXXX YYYYY for o registro(RecNo) de numero 8, ele quer acessar essa linha passando como parâmetro o RecNo 8. Eu desconheço se há como fazer, mas acho que de alguma forma é possível sim, até porque o Sql te retorna um valor válido.
GOSTEI 0
Flyskin
08/06/2008
No oracle existe a função row_number() over()... procura para ver se no firebird tem algo parecido...
GOSTEI 0
Brunodsr
08/06/2008
Excelente!!!!
Eu tinha resolvido o mesmo problema de forma diferente há algum tempo atrás. Mto boa a sua solução Bico.
Eu tinha resolvido o mesmo problema de forma diferente há algum tempo atrás. Mto boa a sua solução Bico.
GOSTEI 0
Wilson Azambuja
08/06/2008
Uma técnica que já utilizei foi com execute block.
EXECUTE BLOCK
RETURNS(ROW_NUMBER INTEGER, TABLE_NAME VARCHAR(32))
AS
BEGIN
FOR SELECT ROW_COUNT, RDB$RELATION_NAME FROM RDB$RELATIONS
INTO :ROW_NUMBER, :TABLE_NAME DO
SUSPEND;
END
EXECUTE BLOCK
RETURNS(ROW_NUMBER INTEGER, TABLE_NAME VARCHAR(32))
AS
BEGIN
FOR SELECT ROW_COUNT, RDB$RELATION_NAME FROM RDB$RELATIONS
INTO :ROW_NUMBER, :TABLE_NAME DO
SUSPEND;
END
GOSTEI 0
Helivalda Barco
08/06/2008
BICO, PRECISEI E USEI A SUA RESPOSTA. MUITO OBRIGADA... DEU SUPER CERTO!!!
GOSTEI 0
Mário Reis
08/06/2008
Uma técnica que já utilizei foi com execute block.
Não estou a responder mas antes a "Perguntar" que usa em seus programas? Tem um exemplo pequeno.Obrigado
EXECUTE BLOCK
RETURNS(ROW_NUMBER INTEGER, TABLE_NAME VARCHAR(32))
AS
BEGIN
FOR SELECT ROW_COUNT, RDB$RELATION_NAME FROM RDB$RELATIONS
INTO :ROW_NUMBER, :TABLE_NAME DO
SUSPEND;
END
Não estou a responder mas antes a "Perguntar" que usa em seus programas? Tem um exemplo pequeno.Obrigado
EXECUTE BLOCK
RETURNS(ROW_NUMBER INTEGER, TABLE_NAME VARCHAR(32))
AS
BEGIN
FOR SELECT ROW_COUNT, RDB$RELATION_NAME FROM RDB$RELATIONS
INTO :ROW_NUMBER, :TABLE_NAME DO
SUSPEND;
END
Nunca usei o "Execute Block" porque até hoje não percebi como "montar o comando" no meu programa
Uso delphi e qual seria o componente a usar Query ou Script?
Ou posso montar o execute block numa Store Procedure
GOSTEI 0