0

类似的问题已经在此处使用动态操作被提及、描述和解决,但我仍然无法在我的情况下实现它。

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

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

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

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 ;

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

K。

4

2 回答 2

0

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

参考这个例子 -链接

希望这会帮助你。让我知道任何问题。

于 2017-08-17T11:21:35.837 回答
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)
于 2017-08-16T13:03:08.990 回答