Bạn có thể viết trình bao bọc của riêng mình như sau:
CREATE OR REPLACE FUNCTION my_bool_to_str(f varchar2) RETURN VARCHAR2 IS
b varchar2(2);
BEGIN
EXECUTE IMMEDIATE 'declare bl boolean; begin bl := ' || f ||
'; if bl then :1 := ''y''; else :1 := ''n''; end if; end;'
using out b;
return b;
END;
Sau đó, bạn có thể gọi nó như thế này:
SELECT part_no,
my_bool_to_str('stock_pkg.is_in_stock('|| part_no|| ')') in_stock
FROM parts_table
Sự khác biệt so với trình bao bọc của bạn là nó nhận một varchar làm đầu vào chứ không phải boolean mà công cụ SQL không nhận ra