Consider script:
==============
set bail on;
set echo on;
shell if exist r:\temp\tmp4test.fdb del r:\temp\tmp4test.fdb;
create database 'localhost:r:\temp\tmp4test.fdb' user sysdba password 'masterkey';
set term ^;
create or alter package pg_temp as
begin
end
^
recreate package body pg_temp as
begin
procedure sp_get_top_secret returns(id int, f01 boolean) as
begin
for
select rand()*1000, rand() < 0.5
from rdb$types
rows 5
into
id, f01
do
suspend;
end
end
^
set term ;^
select * from pg_temp.sp_get_top_secret;
commit;
==============
NOTE: package header is EMPTY.
On 3.x ... 5.x and up to 6.0.0.1465-3bbe725 it will show:
...
select * from pg_temp.sp_get_top_secret;
Statement failed, SQLSTATE = 42000
Procedure "SP_GET_TOP_SECRET" is private to package "PUBLIC"."PG_TEMP"
Since 6.0.0.1771-f73321c procedure SP_GET_TOP_SECRET can be called w/o error and shows data:
select * from pg_temp.sp_get_top_secret;
ID F01
============ =======
857 <false>
880 <false>
111 <false>
266 <false>
353 <false>