[firebase-br] Melhorar esse SQL

Forum ASR & Associados forum em asreassociados.com.br
Ter Abr 4 11:48:22 -03 2006


SET TERM !!;
CREATE PROCEDURE SP_INFO_PERIFERICO
  (PAR_ID INTEGER)
RETURNS
  (ID INTEGER
  ,MODELO VARCHAR ....
  ,SIMNAO CHAR(3)
AS
BEGIN
     FOR SELECT IP.ID , IP.MODELO || ' (' || IP.MARCA || ')' AS 
MODELO_MARCA,END
              FROM ITEM_PERIFERICO IP
             WHERE IP.ID LIKE :ID    
             INTO :IP  , MODELO
    DO
    BEGIN
        SIMNAO = 'NAO';
 
        IF (EXISTS( SELECT P.RDB$DB_KEY FROM PERIFERICOS P
                            WHERE P.ID_ITEM_PERIFERICO = IP.ID AND
                            P.ID NOT IN (SELECT ID_PERIFERICO FROM 
CONFIGURACAO WHERE
                            ID_PERIFERICO = P.ID) ) THEN
           SIMNAO = 'SIM';

       SUSPEND;
   END           
END !!
SET TERM ; !!

Espero ter ajudado,

Airton Salviano Ramos de Souza
Analista de Sistemas
www.asreassociados.com.br        

.:. Enio Marconcini .:. 1010011010 .:. escreveu:
> Pessoal, alguém tem alguma sugestão para esse select, tipo se tem como fazer
> ele de uma forma que não pese na hora da consulta:
>
> SELECT
>   IP.ID,
>   IP.MODELO || ' (' || IP.MARCA || ')' AS MODELO_MARCA,
>   CASE (
>          SELECT COUNT(P.ID_ITEM_PERIFERICO) FROM PERIFERICOS P
>          WHERE P.ID_ITEM_PERIFERICO = IP.ID AND
>          P.ID NOT IN (SELECT ID_PERIFERICO FROM CONFIGURACAO WHERE
> ID_PERIFERICO = P.ID)
>        )
>     WHEN 0 THEN 'Não'
>     ELSE 'Sim'
>   END AS PRODUTO_EM_ESTOQUE
> FROM
>   ITEM_PERIFERICO IP
>
> WHERE
>   IP.ID LIKE :ID
>
> ORDER BY
>   3 DESC
>
>
> abraço
>
> --
> ENIO RODRIGO MARCONCINI
> .:. msnm: eniorm em gmail.com .:.
> .:. skype: eniorm .:.
> http://www.google.com/images/art.gif
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> [ www.iot.org.br ]
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>   





Mais detalhes sobre a lista de discussão lista