Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在oracle apex的动态操作中从PLSQL代码内部调用Javascript_Javascript_Oracle_Plsql_Oracle Apex - Fatal编程技术网

如何在oracle apex的动态操作中从PLSQL代码内部调用Javascript

如何在oracle apex的动态操作中从PLSQL代码内部调用Javascript,javascript,oracle,plsql,oracle-apex,Javascript,Oracle,Plsql,Oracle Apex,在OracleApex的动态操作中,我们如何从PLSQL代码调用javascript代码。 实际上,我的要求是从下拉列表中选择角色2_。然后使用sql查询查找附加到此角色的所有用户名。一旦检索到用户名,交互式网格中的所有行都应该为这些用户列表着色。IG包含一个列名USER\u name 如果该角色存在于IG中,那么我可以通过在dynamic action-->Javascript代码中编写以下代码使其工作 $(document).ready(function() { $("td:nth

在OracleApex的动态操作中,我们如何从PLSQL代码调用javascript代码。 实际上,我的要求是从下拉列表中选择角色2_。然后使用sql查询查找附加到此角色的所有用户名。一旦检索到用户名,交互式网格中的所有行都应该为这些用户列表着色。IG包含一个列名USER\u name

如果该角色存在于IG中,那么我可以通过在dynamic action-->Javascript代码中编写以下代码使其工作

     $(document).ready(function() {
$("td:nth-child(28)").each(function() {
    if ($(this).text() === apex.item( P2_ROLE ).getValue()) {
        $(this).parent().children().css({'background-color': '#FF9999'});
    }       
});
});
但问题是所选择的角色不会显示在交互式网格中

因此,作为一种解决方法,我希望使用PLSQL获取特定于该角色的所有用户名,并使用JAVASCRIPT将它们与交互式网格中的USER_NAME列相匹配

但我不确定如何在PLSQL代码中调用JAVSCRIPT代码。基本上我想做这样的事情:

DECLARE
Cursor c_user_name is
 select distinct user_name  from wf_user_roles where role_name = :P2_ROLE;
l_USER_NAME varchar2(1000);
BEGIN
 OPEN C_USER_NAME ;
  LOOP
   FETCH C_USER_NAME into l_USER_NAME;
   EXIT WHEN C_USER_NAME%NOTFOUND;

  -- Call this JAVASCRIPT code now  
  /*
  $(document).ready(function() {
   $("td:nth-child(28)").each(function() {
    if ($(this).text() === l_USER_NAME) {
        $(this).parent().children().css({'background-color': '#FF9999'});            

     }        
   });
  });
 */

 END LOOP; 
 END;

有人能帮我一下吗。

你可以使用apex.server.process:

使用此函数,您可以使用javascript调用PL/SQL进程,并在代码返回后执行某些操作

例如:

UPD

JAVASCRIPT

apex.server.process("new_assign_roles", 
   { x01: 'a_value', x02: 'b_value', x03: 'c_value' },
   {
      success: function(pData) {
         //you can do anything here
         console.log(pData);
         apex.message.alert(pData.v_result);
      }
   }
);
随需应变流程

DECLARE

p_a VARCHAR2(1000) := APEX_APPLICATION.g_x01; 
p_b VARCHAR2(1000) := APEX_APPLICATION.g_x02; 
p_c VARCHAR2(1000) := APEX_APPLICATION.g_x03; 

v_result VARCHAR2(4000) := p_a||' - '||p_b||' - '|| p_c;

BEGIN 
-- you can do anything here  

    apex_json.open_object;  
    apex_json.write('success', true);  
    apex_json.write('v_result', v_result);  
    apex_json.close_object;  

END;
您可以在此处看到此示例:


20191125AL>用户测试已锁定。

相关问题:您好,谢谢您的建议。我试图在代码中实现这个apex.server.process。通过使用AJAX回调过程,我成功地执行了一个简单的insert语句,但是当我试图从这个过程调用另一个函数时,它不起作用。下面是我在JAvascript中编写的代码:apex.server.processnew_assign_roles,{x01:USER_NAME,x02:l_role,x03:l_justification,x04:l_date,};在AJAX cllback过程中,我正在编写:声明p_return_status varchar21000:=NULL;p_msg_data varchar21000:=NULL;开始-插入测试值apex_application.g_x01、apex_application.g_x02、apex_application.g_x03、apex_application.g_x04;XXUA_APEX_UMX_PKG.proc_assign_角色APEX_APPLICATION.g_x01、APEX_APPLICATION.g_x02、APEX_APPLICATION.g_x03、APEX_APPLICATION.g_x04、P_return_状态、P_msg_数据-HTP.pP_msg_数据;终止你能告诉我这里有什么问题吗?只是有疑问,我们甚至可以从AJAX回调过程中调用函数/过程吗?还是只允许DML声明?谢谢romeuBraga!你救了我!这很有魅力。我现在能够成功地从JAVASCRIPT调用plsql过程。一个简单的问题。如果在动态操作中使用apex.server.process,刷新真实操作是否无效?我正在尝试刷新我的交互式网格,但它没有刷新!!
login with:
workspace: stackquestions
user: user_test
pwd: stackquestions
application: 145797
page: 33