繁体   English   中英

从PL / SQL查询中选择dbms_output缓冲区?

[英]Selecting the dbms_output buffer from a PL/SQL query?

我有一个存储过程mydb.iscustomereligible(someGUID) ,它在一个简单的结果集中返回'true''false'

如果客户不符合条件,那么proc将原因打印到dbms_output,例如reason code: Invalid Age: 2

如何改进以下语句以包含dbms_output文本?

select mydb.iscustomereligible('1F2629379C4FA046E050C90A0C5A3000') from dual;

到目前为止,这是我想出的(不幸失败),我无法使dbms_output.get_line正常工作

declare
  v_Data dbms_output.chararr;
  v_NumLines number;
begin
  -- enable the buffer first
  dbms_output.enable(1000000);
  dbms_output.put_line('hi');
  select mydb.iscustomereligible('1F2629379C4FA046E050C90A0C5A3000') from dual;
  select dbms_output.get_line(???) from dual;
end;  

谢谢 :)

这是您不会修改的功能的示例。 我认为它只放一行。

create or replace function iscustomereligible return boolean is
begin
   dbms_output.enable(1000000);
   dbms_output.put_line('hi');
   return true;
end;
/

这是一个函数,它将使用该函数显然编写的dbms_output行连接您不会修改的函数结果。

create or replace function debug_iscustomereligible return varchar2 is
   v_line varchar2(4000);
   v_status number;
   v_el     boolean;
begin
   v_el := iscustomereligible;
   dbms_output.get_line(v_line, v_status); -- ignoring v_status if null is ok
   return 'customer ' || case v_el when true then 'eligible' else 'ineligible' end || ': ' || v_line;
end;
/

如果仅通过执行查询来强制查询结果,这就是如何查询结果。

select debug_iscustomereligible() from dual;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM