2008-09-22 53 views
9

Tôi có một số lưu trữ Oracle được lưu trữ trong đó có hơn 20 tham số đầu vào và từ chúng morethen 10 tham số được yêu cầu, tôi muốn tất cả với một số giá trị và không muốn chấp nhận null giá trị cho điều đó, Có bất cứ điều gì mà tôi có thể khai báo trong thủ tục hủy bỏ thủ tục chính nó có thể hạn chế tham số đầu vào null hoặc tôi sẽ phải kiểm tra cho mỗi giá trị và tăng ngoại lệ nếu giá trị yêu cầu là null?Làm thế nào để hạn chế các tham số đầu vào NULL vào quy trình lưu trữ oracle

Trả lời

5

Trong PL/SQL, tôi không biết cách kiểm tra từng cái.

Nếu bạn đang gọi thủ tục được lưu trữ từ thư viện bên ngoài, thư viện đó có thể có chức năng đó. Điều này có lẽ không có khả năng vì thông số đầu vào NULL thường xuyên được yêu cầu.

Bạn có thể thực hiện thủ tục PL/SQL trợ giúp, với một giá trị, sẽ tăng một ngoại lệ nếu nó là null để lưu trên mã dự phòng. Sau đó bạn có thể viết một đoạn của perl/python/groovy sẽ slurp lên khai báo thủ tục của bạn và quây ra các cuộc gọi đến thủ tục kiểm tra null của bạn.

+1

Ditto, tôi không nghĩ rằng có thể –

+0

của nó Đó là điên! Tôi chỉ tìm thấy điều này sau khi di chuyển từ SQL Server, nơi nó đơn giản để nói "NOT NULL" bên cạnh tên tham số. – Milimetric

9

Tôi biết đây là một câu hỏi cũ, nhưng có một tùy chọn (được mô tả here):

SUBTYPE varchar2_not_null IS VARCHAR2 NOT NULL; 

Bạn có thể xác định loại hình này (và number_not_null, vv) hoặc trong cùng một gói như thủ tục lưu trữ của bạn, hoặc trong gói riêng của họ nếu bạn muốn sử dụng chúng ở nhiều nơi. Sau đó bạn có thể khai báo các tham số của các kiểu này.

Nếu NULL được thông qua như một cuộc tranh cãi, bạn sẽ nhận được một thông báo lỗi rất hữu ích:

cannot pass NULL to a NOT NULL constrained formal parameter 
Các vấn đề liên quan