Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Sprawdź, czy parametr ma wartość NULL w klauzuli WHERE

Zamiast oceniać stan parametru procedury w samej instrukcji SQL, przenieś tę ocenę do zawierającego ją bloku PL/SQL, aby została wykonana tylko raz przed przesłaniem idealnej instrukcji SQL. Na przykład:

CREATE OR REPLACE PROCEDURE my_sp (p_DrumNo VARCHAR2)
IS
BEGIN
    IF p_DrumNo IS NULL THEN
        SELECT ...
        INTO ... -- Assumed
        FROM ...
        WHERE my_column = p_DrumNo;
    ELSE
        SELECT ...
        INTO ... -- Assumed
        FROM ...
        WHERE ORDER_ID IN (SELECT ORDER_ID FROM ORDERDELIVERY);
    END;
END;

Odniosłem również pewne sukcesy w dostrajaniu instrukcji SQL za pomocą OR dzieląc oświadczenie na dwie wzajemnie wykluczające się stwierdzenia za pomocą UNION ALL:

SELECT ...
FROM ...
WHERE p_DrumNo IS NULL
AND ORDER_ID IN (SELECT ORDER_ID FROM ORDERDELIVERY)
UNION ALL
SELECT ...
FROM ...
WHERE p_DrumNo IS NOT NULL
AND my_column = p_DrumNo;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zoptymalizuj zapytanie Oracle

  2. Błąd Oracle podczas tworzenia widoku — ORA-01720

  3. Rejestrowanie procedury składowanej Oracle Java za pomocą interfejsu API rejestrowania Java (java.util.logging )

  4. Jak przekonwertować format liczbowy kolumny obliczeniowej na format czasu (gg:mm:ss), zapytanie sql

  5. Czy istnieje oficjalna rekomendacja Oracle dotycząca używania jawnych złączeń ANSI JOIN w porównaniu ze złączeniami niejawnymi?