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块内可以正常调用,但在数据库中的定时任务调用就会出错!!!!!
...全文
121 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
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;

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧