Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Periksa apakah parameter NULL dalam klausa WHERE

Alih-alih mengevaluasi status parameter prosedur Anda dalam pernyataan SQL itu sendiri, pindahkan evaluasi itu ke blok PL/SQL yang berisi sehingga hanya dieksekusi sekali sebelum pernyataan SQL yang ideal dikirimkan. Misalnya:

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;

Saya juga berhasil menyetel pernyataan SQL dengan OR dengan memecah pernyataan menjadi dua pernyataan yang saling eksklusif dengan 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. Jalankan/jalankan beberapa prosedur secara Paralel - Oracle PL/SQL

  2. Masukkan ke dalam tabel menggunakan kumpulan hasil kueri ganda?

  3. prosedur oracle dengan case Itu tergantung dari parameter

  4. Rails 3.0.3 - Oracle_enhanced tidak berfungsi

  5. Java-Eclipse:Paket oracle.jdbc.driver tidak ada