ORACLE APEX中无法在sql中调用存储过程

qq871549589 2010-02-26 05:26:38
ORACLE APEX中我做了一个定时任务,要定期调用send_mail发送邮件,但总是报错
error others:ORA-20001: This procedure must be invoked from within an application session.
后发现在APEX内部PL/SQL块内可以正常调用,但在数据库中的定时任务调用就会出错!!!!!
...全文
98 1 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
tiger80 2010-02-26
  • 打赏
  • 举报
回复
这是APEX的一种安全机制,在APEX之外运行其数据库内部的存储过程需要在过程中
调用APEX的API命令,否则就会报错
ORA-20001: This procedure must be invoked from within an application session. 

要求必须从一个应用程序会话中调用,
要运行从SQL Developer或计划任务调度使用数据库,需要手动设置在执行Apex的API或访问数据的情况下安全组的命令
APEX中发送邮件
begin

apex_mail.send(
p_to => 'to_user@their_company.com', -- change email address
p_from => 'your_email@company.com', -- change to your email address
p_body => 'Main email text goes here',
p_subj => 'APEX_MAIL Package - Plain Text message'
);

end;

首先获取工作区编号:
select workspace, schemas, workspace_id
from apex_workspaces;

然后修改为
begin

wwv_flow_api.set_security_group_id(workspace_id);

apex_mail.send(
p_to => 'to_user@their_company.com', -- change email address
p_from => 'your_email@company.com', -- change to your email address
p_body => 'Main email text goes here',
p_subj => 'APEX_MAIL Package - Plain Text message'
);

end;
相关推荐
发帖
Oracle 高级技术

3473

社区成员

Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
帖子事件
创建了帖子
2010-02-26 05:26
社区公告
暂无公告