我有一個過程需要三個參數,然後根據這些參數查詢表。現在,其中一個可以爲null,如果是,我希望它在選擇的WHERE子句中被忽略。PL/SQL過程 - 如果爲空,則忽略參數
create or replace PROCEDURE Procedure1
(
COUNTRY IN VARCHAR2, MAKE IN VARCHAR2, SERIAL IN number
) AS
BEGIN
DECLARE
CURSOR c1 IS select v.ID from vehicle v
where v.country = COUNTRY AND
v.make = MAKE AND
((SERIAL IS NOT NULL AND v.serial = SERIAL) OR 1);
BEGIN
FOR e_rec IN c1 LOOP
DBMS_OUTPUT.PUT_LINE(e_rec.id);
END LOOP;
END;
END Procedure1;
我試過這樣的東西,但它不起作用。
使用,這是相同的與列相同的參數名稱可能會導致混淆,我會這樣做。我認爲你的情況應該是這樣的:'(SERIAL IS NULL or v.serial = SERIAL)'。如果PL/SQL解析器在整個表達式中實際使用*列*串行,我不會感到驚訝。只需確保,更好地更改參數名稱。 –
謝謝,它的工作原理。我會小心改變參數的名字。 –