Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

plsql - store function - passing a NULL or empty string argument

666354Dec 11 2009 — edited Dec 11 2009
Please see the question I posed below. Does anyone have experience with passing a NULL or empty string to a store function? THANKS.


Hi All,

I have a function that takes in two string arrays, status_array, and gender_array. You can see the partial code below. Somehow if the value for the string array is null, the code doesn't execute properly. It should return all employees, but instead it returns nothing. Any thoughts? THANKS.

for iii in 1 .. status_array.count loop
v_a_list := v_a_list || '''' || status_array(iii) || ''',';
end loop;
v_a_list := substr(v_a_list, 1, length(trim(v_a_list)) - 1);

for iii in 1 .. gender_array.count loop
v_b_list := v_b_list || '''' || gender_array(iii) || ''',';
end loop;
v_b_list := substr(v_b_list, 1, length(trim(v_b_list)) - 1);

IF v_a_list IS NOT NULL and v_b_list IS NOT NULL THEN
v_sql_stmt := 'select distinct full_name from t_employee where status in (' || v_a_list || ') and gender in (' || v_b_list || ')';
ELSIF v_a_list IS NOT NULL and v_b_list IS NULL THEN
v_sql_stmt := 'select distinct full_name from t_employee where status in (' || v_a_list || ') ';
ELSIF v_a_list IS NULL and v_b_list is not null THEN
v_sql_stmt := 'select distinct full_name from t_employee where gender in (' || v_b_list || ')';
ELSE
v_sql_stmt := 'select distinct full_name from t_employee';
END IF;

OPEN v_fullname_list FOR v_sql_stmt;

RETURN v_fullname_list;
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jan 8 2010
Added on Dec 11 2009
8 comments
1,047 views