Fórum SQL para o primeiro registro #36719
09/05/2003
0
Olá pessoal,
Preciso fazer uma query que me retorne somente o primeiro registro da tabela, só que eu não sei nenhum valor dos campos deste primeiro registro.
Obrigado,
Zico.
Preciso fazer uma query que me retorne somente o primeiro registro da tabela, só que eu não sei nenhum valor dos campos deste primeiro registro.
Obrigado,
Zico.
Zicosh3
Curtir tópico
+ 0
Responder
Posts
10/05/2003
Obubiba
Com firebird você pode utilizar a seguinte instrução:
select first 1 * from TABELA;
Mas no interbase, essa instrução não existe. Para resolver isso, faça a consuta completa em um query(select * from TABELA) e utilize a procedure First:
Query.first;
Depois, recupere apenas o primeiro registro do dataset retornado.
O problema é que você vai precisar retornar todos os registros para sua aplicação.
select first 1 * from TABELA;
Mas no interbase, essa instrução não existe. Para resolver isso, faça a consuta completa em um query(select * from TABELA) e utilize a procedure First:
Query.first;
Depois, recupere apenas o primeiro registro do dataset retornado.
O problema é que você vai precisar retornar todos os registros para sua aplicação.
Responder
Gostei + 0
23/07/2003
Everson
Uma Forma interessante é rodar um procedimento que pegue o codigo minimo de uma determinada consulta e após consulte novamente com o código encontrado e gere o resultado final que seria por exemplo em uma tabela de Cliente/ClienteFones onde 1 cliente pode ter + de um telefone dai com este SP vc consegue sempre pegar o primeiro telefone que o usuario digitou para TAL cliente....
CREATE PROCEDURE SP_ACHA_FONE (
CODIGOCLIENTE INTEGER)
RETURNS (
VDDD CHAR(2),
VNUMERO VARCHAR(8))
AS
DECLARE VARIABLE VCODIGOFONE INTEGER;
BEGIN
SELECT MIN(PT.CODIGOFONE)
FROM PESSOATELEFONE PT
JOIN PESSOAS P ON (PT.CODIGOPES = P.CODIGOPES)
WHERE P.CODIGOPES = :CODIGOCLIENTE
INTO: VCODIGOFONE;
IF (:VCODIGOFONE IS NOT NULL) THEN
BEGIN
SELECT PT.DDD, PT.NUMERO
FROM PESSOATELEFONE PT
WHERE PT.CODIGOFONE = :VCODIGOFONE
INTO :VDDD, :VNUMERO;
END
ELSE
VCODIGOFONE = 0;
SUSPEND;
END
At+
CREATE PROCEDURE SP_ACHA_FONE (
CODIGOCLIENTE INTEGER)
RETURNS (
VDDD CHAR(2),
VNUMERO VARCHAR(8))
AS
DECLARE VARIABLE VCODIGOFONE INTEGER;
BEGIN
SELECT MIN(PT.CODIGOFONE)
FROM PESSOATELEFONE PT
JOIN PESSOAS P ON (PT.CODIGOPES = P.CODIGOPES)
WHERE P.CODIGOPES = :CODIGOCLIENTE
INTO: VCODIGOFONE;
IF (:VCODIGOFONE IS NOT NULL) THEN
BEGIN
SELECT PT.DDD, PT.NUMERO
FROM PESSOATELEFONE PT
WHERE PT.CODIGOFONE = :VCODIGOFONE
INTO :VDDD, :VNUMERO;
END
ELSE
VCODIGOFONE = 0;
SUSPEND;
END
At+
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)