I am not able to run this simple if/then statement in oracle database. (i think it is 10.x but not sure, seems to be an issue of my sql skill not db version).
Can you help me figure out how to run this simple procedure- email_table_copy() – to send a csv copy of the table only if the table has data in it?
I have to use ‘call’ with the email_table_copy procedure, and it seems this is where the issue occurs.
I would really appreciate your help.
x
DECLARE
ncount NUMBER(10);
v_sql LONG;
BEGIN
SELECT
COUNT(person_id)
INTO ncount
FROM
test_conditional;
IF ( ncount > 0 ) THEN
v_sql := 'call email_table_function(''owner'', ''test_conditional'', ''csv'', ''email@email.com''
);';
EXECUTE IMMEDIATE v_sql;
END IF;
END;
Advertisement
Answer
Just remove ;
from your v_sql
:
DECLARE
ncount NUMBER(10);
v_sql LONG;
BEGIN
SELECT
COUNT(person_id)
INTO ncount
FROM
test_conditional;
IF ( ncount > 0 ) THEN
v_sql := q'[
call email_table_function('owner', 'test_conditional', 'csv', 'tyler.hahn@wpr.org')
]';
EXECUTE IMMEDIATE v_sql;
END IF;
END;
Also as you can see I’ve a bit modified your literal to q-literal to make it more readable.
Simple example:
begin
execute immediate q'[
call dbms_output.put_line('Test string')
]';
end;
/