I forgot to add EXECUTE IMMEDIATE sql_stmt
i.e.
DECLARE
sql_stmt VARCHAR2(200);
BEGIN
sql_stmt := 'SELECT COLUMN1, COLUMN2 FROM TAB1 WHERE COND1 AND COND2 AND ';
CASE condition
WHEN condition_3 THEN
sql_stmt := sql_stmt || COND3;
WHEN condition_4 THEN
sql_stmt := sql_stmt || COND4;
END CASE;
EXECUTE IMMEDIATE sql_stmt;
END
Main Topics
Browse All Topics





by: DLyallPosted on 2006-03-16 at 06:31:02ID: 16205183
Build a statement string using your conditional statements
and then use EXECUTE IMMEDIATE <dynamic string>;
where dynamic_string is a string expression that represents a SQL statement or PL/SQL block
e.g.
DECLARE
sql_stmt VARCHAR2(200);
BEGIN
sql_stmt := 'SELECT COLUMN1, COLUMN2 FROM TAB1 WHERE COND1 AND COND2 AND ';
CASE condition
WHEN condition_3 THEN
sql_stmt := sql_stmt || COND3;
WHEN condition_4 THEN
sql_stmt := sql_stmt || COND4;
END CASE;
END;