We have a next test package.
CREATE OR REPLACE PACKAGE pg_test IS
TYPE T_VARCHAR2 IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
PROCEDURE p_test
(
a_param0 IN T_VARCHAR2,
a_param1 OUT NOCOPY T_VARCHAR2
);
END pg_test;
CREATE OR REPLACE PACKAGE BODY pg_test IS
PROCEDURE p_test
(
a_param0 IN T_VARCHAR2,
a_param1 OUT NOCOPY T_VARCHAR2
)
IS
BEGIN
FOR ii IN 1..a_param0.COUNT
LOOP
a_param1(ii) := a_param0(ii);
END LOOP;
END p_test;
END pg_test;
In Oracle 12.2.0.1.0, in accordance with "Example 7-3 Describing the Stored Procedure" in "7.4.2 Describing the Stored Procedure"
(https://docs.oracle.com/en/database/oracle/oracle-database/12.2/lnoci/describing-schema-metadata.html#GUID-620445C6-0F81-4DA8-AC79-CB046F52890B)
we got a list of arguments at the next level (when the argument is of a record or table type) by
OCIAttrGet((void *)arg, OCI_DTYPE_PARAM, (void *)&arglst1, (ub4 *)0, OCI_ATTR_LIST_ARGUMENTS, errh)
After migration to Oracle 19.3.0.0.0 and using Instant Client for Windows.x64 19.6.0.0.0
this call has stopped working although the documentation says that list of arguments at the next level must return
"8.2.11 Argument and Result Attributes"
(https://docs.oracle.com/en/database/oracle/oracle-database/19/lnoci/describing-schema-metadata.html#GUID-93E64E03-2D20-4CDB-B13F-1E39AA4116D1)