Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Kiểm tra xem tham số có phải là NULL trong mệnh đề WHERE không

Thay vì đánh giá trạng thái tham số thủ tục của bạn trong chính câu lệnh SQL, hãy di chuyển điều kiện đó sang khối PL / SQL có chứa để nó chỉ được thực thi một lần trước khi câu lệnh SQL lý tưởng được gửi. Ví dụ:

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;

Tôi cũng đã thành công trong việc điều chỉnh các câu lệnh SQL bằng OR bằng cách chia câu lệnh thành hai câu loại trừ lẫn nhau bằng 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. Điều gì xảy ra với các trình kích hoạt phụ thuộc khi bảng bị loại bỏ?

  2. Tại sao việc chọn các cột được chỉ định và tất cả đều sai trong Oracle SQL?

  3. cách tìm nạp, xóa, cam kết từ con trỏ

  4. MODIFY COLUMN trong oracle - Làm cách nào để kiểm tra xem một cột có thể nullable hay không trước khi đặt thành nullable?

  5. Không thể liên kết lại kết nối vì các đối tượng con vẫn đang mở