mostrar numero do registro no sql

08/06/2008

16

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?


Responder

Post mais votado

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:
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.


Responder

Mais Posts

09/06/2008

Javapaulomg

Acho que ´Count´ resolveria. Semelhante a ´select count(*) from tabela´.


Responder

09/06/2008

Paulo

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.


Responder

09/06/2008

Flyskin

No oracle existe a função row_number() over()... procura para ver se no firebird tem algo parecido...


Responder

09/06/2008

Brunodsr

Excelente!!!!

Eu tinha resolvido o mesmo problema de forma diferente há algum tempo atrás. Mto boa a sua solução Bico.


Responder
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
Responder
BICO, PRECISEI E USEI A SUA RESPOSTA. MUITO OBRIGADA... DEU SUPER CERTO!!!
Responder

28/02/2019

Mário Reis

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


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
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira