SQL कथन में ही अपनी प्रक्रिया की पैरामीटर स्थिति का मूल्यांकन करने के बजाय, उस evaulation को युक्त PL/SQL ब्लॉक में ले जाएँ ताकि इसे आदर्श SQL कथन प्रस्तुत करने से पहले केवल एक बार निष्पादित किया जा सके। उदाहरण के लिए:
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;
मुझे SQL कथनों को OR
. के साथ ट्यून करने में भी कुछ सफलता मिली है 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;