从表中查询并将其发送给过程

问题描述 投票:1回答:2

注意我想查询页面项目名称并将相应的项目值发送到过程中。我可以获取项目名称,但无法获取其值。首先,我使用以下代码:

    begin
     for j in (select item_name from UTLITMINF where service_id ='abc' ) loop
                val := val || ':' || j.item_name;   --items name
             END LOOP;
    /* exe := ' begin 

             dynamic_api_call(p_service => :ser,
                     p_par => :v_val,     --items value to need to send
                     o_result_json => :v_l_response_text);
            end; ';
     execute immediate exe 
             using  IN ser,
                     in  val,
                   out l_response_text;*/

     begin
         dynamic_api_call(p_service => 'abc',
                     p_par => val,     --items name from page queried from table and send its value to procedure
                     o_result_json => l_response_text);
    end;


    raise_application_error(-20001,l_response_text);
end;

在val参数中,它包含P11_CUSTOMER。但是它的价值并没有通过程序。我如何获得它的价值?如果需要改进我的代码,请提出建议。

oracle plsql oracle-apex plsqldeveloper
2个回答
0
投票

尝试使用如下所示的动态SQL

   begin
 for j in (select item_name from UTLITMINF where service_id ='abc' ) loop
            val := val || ':' || j.item_name;   --items name
         END LOOP;
 exe := ' begin 

         dynamic_api_call(p_service => :ser,
                 p_par => :v_val,     --items value to need to send
                 o_result_json => :v_l_response_text);
        end ;';
 execute immediate exe 
         using ser,
                 val,
                OUT l_response_text;


raise_application_error(-20001,l_response_text);

0
投票

您可以将V(值的缩写)和NV(值的缩写)功能用于动态项目名称。尝试这样的事情(您需要根据自己的需要进行调整)。

declare

  l_response_text varchar2(255);
  l_ser           varchar2(255) := 'abc';
  l_item_name     varchar2(255);

begin

  select item_name
  into l_item_name
  from UTLITMINF 
  where service_id = l_ser;

  dynamic_api_call(
    p_service     => l_ser,
    p_par         => v(l_item_name),
    o_result_json => l_response_text
  );

end;
© www.soinside.com 2019 - 2024. All rights reserved.