以下示例代码说明了dbms_application_info遇到的问题。如果我在以下过程中使用它:
create or replace procedure test01 is
vsql varchar2(50);
begin
vsql := 'select sysdate from dual';
execute immediate vsql;
DBMS_APPLICATION_INFO.SET_MODULE('TEST','Starting...');
dbms_lock.sleep ( 10 );
DBMS_APPLICATION_INFO.SET_MODULE(NULL, NULL);
end;
/
exec test01;
然后查询v $ session会显示“ Starting ...”,正如我希望的那样!
但是,有必要在作业中运行相关过程。如果执行此操作,则看不到“正在启动...”
declare
JNAME varchar2(200) := to_char(sysdate, 'YYYYMMDDHHMiSS');
BEGIN
DBMS_SCHEDULER.create_job (
job_name => 'TEST01_'||JNAME,
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN TEST.TEST01; END;',
start_date => NULL,
repeat_interval => NULL,
enabled => TRUE);
END;
/
任何可能希望看看并可能帮助我理解为什么的人都可以执行此代码?
谢谢! ->太好了
答案 0 :(得分:1)
您必须在立即执行语句中使用Mage
Character
同时使用Fighter
设置了模块和操作。
与documented一样,如果您省略INTO clause
,则不会引发任何异常,但是
如果dynamic_sql_statement是SELECT语句,并且您同时省略了in_clause和bulk_collect_into_clause,则execute_immediate_statement将永远不会执行。
因此,我希望即使没有INTO子句,也应该设置应用程序信息,但由于某些原因,它没有设置。无论如何,使用INTO都可以正常工作。
我在12.1上进行了测试