sql >> Database >  >> RDS >> Oracle

Oracle:krijg een query om altijd precies één rij te retourneren, zelfs als er geen gegevens te vinden zijn

Er zijn manieren om dit eenvoudiger en schoner te maken, maar dit beschrijft in feite de techniek:

SELECT data_name
FROM data_table
WHERE data_table.type = v_t_id

UNION ALL

SELECT NULL AS data_name
FROM dual
WHERE NOT EXISTS (
    SELECT data_name
    FROM data_table
    WHERE data_table.type = v_t_id
)

Als het eerste deel van de unie leeg is, bevat het tweede een rij, als het eerste deel niet leeg is, bevat het tweede geen rijen.

Als de zoekopdracht te veel tijd kost, gebruik dan deze:

SELECT * FROM (  
    SELECT data_name
    FROM data_table
    WHERE data_table.type = v_t_id

    UNION ALL

    SELECT NULL AS data_name
    FROM dual
  ) WHERE data_name is not null or ROWNUM = 1


  1. Oracle:hoe groeperen op een bereik?

  2. Hoe kan ik de MySQL-gebruikersnaam en -wachtwoord beschermen tegen decompilatie?

  3. Postgres:ERROR:waarde te lang voor type karakter variërend(255) Specificeert het veld niet

  4. Wat is een index?