APEX - 如何根据页面上项目的值调用存储过程

时间:2017-08-16 11:12:44

标签: oracle-apex oracle-apex-5.1

类似的问题已经在这里使用动态操作进行了描述和解决,但我仍然无法在我的情况下实现它。

我有一个表单(自动创建但是页面创建者)来更改远程数据库中的密码。有三个项目

  • 登录:P15_UNAME(选择列表)LOV
  • 新密码:P15_NEW(密码)
  • 按钮执行:SUBMIT(按钮)。

按钮触发一个简单的存储过程:

declare
  success int;
  msg varchar(100);
begin
  SYS.CHANGEPASSWORD@abc(
    PUSERNAME => :P15_UNAME,
    PNEWPASSWORD => :P15_NEW,
    PRESULT => success,
    PMESSAGE => msg);
 if success = 0 then
     apex_application.g_print_success_message := msg;
 else
     apex_application.g_print_success_message := '<span style="color:red">'  || msg || '</span>';
 end if ;
end ;

不幸的是,存储过程不会调用登录名和密码的选择/输入值。我可能应该使用动态操作,但不知道如何同时调用存储过程和动态。你能给我一些提示吗。

ķ。

2 个答案:

答案 0 :(得分:0)

您是否尝试将页面项值直接传递到数据库中?您的过程/过程调用看起来应该是这样的。

-- database
PROCEDURE p_change_details(p_uname varchar2, p_password varchar2) 
IS 
  success int;
  msg varchar(100);
begin
  SYS.CHANGEPASSWORD@abc(
    PUSERNAME => p_uname,
    PNEWPASSWORD => p_password,
    PRESULT => success,
    PMESSAGE => msg);
 if success = 0 then
     apex_application.g_print_success_message := msg;
 else
     apex_application.g_print_success_message := '<span style="color:red">'  || msg || '</span>';
 end if ;
end ;

--APEX
p_change_details(:P15_UNAME, :P15_NEW)

答案 1 :(得分:0)

您可以创建动态操作以在按钮单击时执行PL / SQL代码。

参考此示例 - Link

希望这会对你有所帮助。如有任何问题,请告诉我。