Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> dbms_job.submit, stored procedure with parameters
OS: Linux Linux 2.4.18-4GB (Suse 8.0)
RDBMS: Oracle 9.2.0.1.0, Standard Edition
Dear all,
maybe an easy question, but I have some trouble with this.
Maybe someone can point me in the right direction.
I created a stored procedure which queries Oracle Text.
Procedure startuser_search runs fine.
In case of long running queries, the procedure
startuser_search must be executed in the background
(web based application).
A second stored procedure job_submit executes startuser_search in the background. I have difficulties with the second one.
create or replace procedure startuser_search
( p_table varchar2 default 'SEARCH_1_MP', p_string varchar2 default 'aids', p_hitlist_id number default 5000000
type rc is ref cursor;..<snip rest>
create or replace procedure job_submit (
p_background IN NUMBER DEFAULT 0, --identical to proc startuser_search p_table IN varchar2 default 'SEARCH_1_MP', p_string IN varchar2 default 'aids', p_hitlist_id IN number default 5000000
my_sqlerrm varchar2(150); l_jobno number; --seq number for dbms_job l_p_string varchar2(500) := p_string; l_p_table varchar2(20) := p_table; l_p_hitlist_id number := p_hitlist_id;
BEGIN
--print stuff out
dbms_output.put_line('l_p_string :' ||l_p_string); dbms_output.put_line('l_p_table: ' || l_p_table); dbms_output.put_line('l_p_hitlist_id: ' || l_p_hitlist_id);
dbms_output.put_line('after job submission, l_jobno: ' || l_jobno); dbms_output.put_line('l_p_string :' ||l_p_string); dbms_output.put_line('l_p_table: ' || l_p_table); dbms_output.put_line('l_p_hitlist_id: ' || l_p_hitlist_id);
--insert in helper table
insert into param_hitlist_id (job_id, hitlist_id)
values (l_jobno, l_p_hitlist_id); commit; --for insert
dbms_output.put_line('insert in table param_hitlist_id done'); end if;
END;
/
output:
exec job_submit(p_background=>1);
l_p_string :aids l_p_table: SEARCH_1_MP l_p_hitlist_id: 5000000
l_p_string :aids l_p_table: SEARCH_1_MP l_p_hitlist_id: 5000000
PL/SQL procedure successfully completed.
job_submit never executes startuser_search.
<snip of trace file>
*** SESSION ID:(19.297) 2002-10-11 18:45:35.277
*** 2002-10-11 18:45:35.277
ORA-12012: error on auto execute of job 32
ORA-06502: PL/SQL: numeric or value error: character to number
conversion error
ORA-06512: at line 1
</snip trace file>
I monitor dba_jobs with following results:
JOB JOB_OWNER FAILURES B JOB_DEFINITION
---------- --------------- ---------- - ------------------------------ 32 GUIDE 1 N startuser_search('l_p_string', 'l_p_table', 'l_p_hitlist_id');
I tried different syntax to call dbms_job.submit:
dbms_job.submit(
job => l_jobno, what => 'begin startuser_search(p_string=>''||l_p_string||'', p_table=>''||l_p_table||'', p_hitlist_id=>'||l_p_hitlist_id||'); end;' );
With hard coded values, procedure startuser_search is executed in the
background:
DECLARE
jobno number;
BEGIN
DBMS_JOB.SUBMIT (job => jobno , what => 'begin startuser_search(p_string=>''aids'', p_table=>''SEARCH_1_MP'', p_hitlist_id=>6000000); end;' ); COMMIT;
Any suggestions are welcome, TIA and have a nice weekend Manuela Mueller Received on Fri Oct 11 2002 - 11:29:27 CDT