Tôi đang tìm cách tối ưu để tạo một hàm có thể chấp nhận không có tham số và trả về tất cả kết quả, nhưng cũng chấp nhận tham số và trả lại kết quả đó.ORACLE PL/SQL: Chức năng và tham số tùy chọn, như thế nào?
Chuẩn Tôi đã đối phó với tại công việc của tôi là thế này:
FUNCTION get_records (
i_code IN records.code%type := NULL,
i_type IN records.type%type := NULL
) RETURN results
Vấn đề là tôi muốn trả lại hồ sơ đó có một loại NULL là tốt, và sử dụng:
WHERE type = nvl(i_type, type)
Nó chỉ trả về các bản ghi với các loại thực tế chứ không phải các bản ghi rỗng .. vì các lý do rõ ràng. Tôi đã chỉ tự hỏi nếu có một cách tiêu chuẩn để làm điều này có thể được thực hiện trên tất cả các chức năng chúng tôi sử dụng. Thật trùng hợp, nếu tôi cung cấp một tham số ... Tôi không muốn các giá trị NULL của trường đó.
Đây thực sự là những gì tôi đã triển khai sau khi thử nghiệm ... – jlrolin
Tôi khuyên bạn nên thay đổi nó thành 'type = i_type OR i_type IS NULL'. Đây là kinh nghiệm của tôi nhiều khả năng tận dụng lợi thế của một chỉ mục trên 'loại' hơn là sử dụng NVL(). Ngoài ra, có vẻ rõ ràng hơn với tôi. –
@Dave: Đó là giải pháp tôi đã triển khai. – jlrolin