rob*_*gic 1 sql oracle plsql plsqldeveloper
我有一个存储过程mydb.iscustomereligible(someGUID)返回'true'或'false'在一个简单的结果集中.
如果客户不符合条件,则proc会向dbms_output输出一个原因,例如reason code: Invalid Age: 2.
如何改进以下语句以包含dbms_output文本?
select mydb.iscustomereligible('1F2629379C4FA046E050C90A0C5A3000') from dual;
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所提出的(并且令人沮丧失败),我无法让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;
Run Code Online (Sandbox Code Playgroud)
谢谢 :)
以下是您不会修改的功能示例.我假设它只放一行.
create or replace function iscustomereligible return boolean is
begin
dbms_output.enable(1000000);
dbms_output.put_line('hi');
return true;
end;
/
Run Code Online (Sandbox Code Playgroud)
这是一个函数,它将不会修改的函数的结果与显然由该函数编写的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;
/
Run Code Online (Sandbox Code Playgroud)
如果您只是通过执行查询而被迫这样做,那么您将如何查询结果.
select debug_iscustomereligible() from dual;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
498 次 |
| 最近记录: |