CREATE OR REPLACE PROCEDURE sp1 (in1 IN VARCHAR2, in2 IN VARCHAR2, in3 IN VARCHAR2, in4 IN VARCHAR2, in5 IN VARCHAR2)
IS
v_sql VARCHAR2(2000);
BEGIN
v_sql := 'SELECT * FROM table1';
IF in1 IS NOT NULL THEN
v_sql := v_sql || ' WHERE col1=''' || in1 || '''';
END IF;
IF in2 IS NOT NULL THEN
IF INSTR(v_sql, 'WHERE', 1, 1)>0 THEN
v_sql := v_sql || ' AND col2=''' || in2 || '''';
ELSE
v_sql := v_sql || ' WHERE col2=''' || in2 || '''';
END IF;
END IF;
IF in3 IS NOT NULL THEN
IF INSTR(v_sql, 'WHERE', 1, 1)>0 THEN
v_sql := v_sql || ' AND col3=''' || in3 || '''';
ELSE
v_sql := v_sql || ' WHERE col3=''' || in3 || '''';
END IF;
END IF;
IF in4 IS NOT NULL THEN
IF INSTR(v_sql, 'WHERE', 1, 1)>0 THEN
v_sql := v_sql || ' AND col4=''' || in4 || '''';
ELSE
v_sql := v_sql || ' WHERE col4=''' || in4 || '''';
END IF;
END IF;
IF in5 IS NOT NULL THEN
IF INSTR(v_sql, 'WHERE', 1, 1)>0 THEN
v_sql := v_sql || ' AND col5=''' || in5 || '''';
ELSE
v_sql := v_sql || ' WHERE col5=''' || in5 || '''';
END IF;
END IF;
v_sql := v_sql || ';';
DBMS_OUTPUT.PUT_LINE (v_sql);
END;
/
Main Topics
Browse All Topics





by: kotisivaPosted on 2005-11-02 at 08:42:33ID: 15209486
Write query as 'where (col1=' & c & ' OR col1=' n1) And ' ......
where c may be having 1 or 0 depending on the value passed or not.