How to get a real signature for a PLSQL procedure that uses the% ROWTYPE arguments?
For instance:
clear screen; prompt > Table creation to support %ROWTYPE create table samples ( id number, code varchar2(15), lib varchar2(200) ); prompt > Package witch use %ROWTYPE create or replace package use_samples as procedure getSample(input_sample samples%ROWTYPE); end use_samples; / prompt > Package BODY witch use %ROWTYPE create or replace package body use_samples as procedure getSample(input_sample IN samples%ROWTYPE) is ex samples%ROWTYPE; begin select * into ex from samples where samples.code = input_sample.code; end getSample; end use_samples; / prompt > Proc arguments by ALL_ARGUMENTS set pagesize 50000 set linesize 2000 set verify off CLEAR COLUMNS; COLUMN object_name HEADING "PROC" FORMAT A30 JUSTIFY LEFT; COLUMN argument_name HEADING "ARGUMENT_NAME" FORMAT A30 JUSTIFY LEFT; select object_name, argument_name, in_out, data_level, position, data_type from all_arguments where owner = USER and package_name = 'USE_SAMPLES' and object_name = 'GETSAMPLE'; prompt >> Argument 'INPUT_SAMPLE' is shown as 'PL/SQL RECORD' without any link to 'samples%ROWTYPE' prompt > PLSQL types declared select * from DBA_PLSQL_TYPES where owner = USER and package_name = 'USE_SAMPLES'; prompt >> There is no declared type because we use directly a %ROWTYPE argument prompt > Clean up drop package use_samples; drop table samples;
gives:
> Table creation to support %ROWTYPE Table SAMPLES created. > Package witch use %ROWTYPE Package USE_SAMPLES compiled > Package BODY witch use %ROWTYPE Package body USE_SAMPLES compiled > Proc arguments by ALL_ARGUMENTS columns cleared PROC ARGUMENT_NAME IN_OUT DATA_LEVEL POSITION DATA_TYPE ------------------------------ ------------------------------ --------- ---------- ---------- ------------------------------ GETSAMPLE INPUT_SAMPLE IN 0 1 PL/SQL RECORD GETSAMPLE ID IN 1 1 NUMBER GETSAMPLE CODE IN 1 2 VARCHAR2 GETSAMPLE LIB IN 1 3 VARCHAR2 >> Argument 'INPUT_SAMPLE' is shown as 'PL/SQL RECORD' without any link to 'samples%ROWTYPE' > PLSQL types declared no rows selected >> There is no declared type because we use directly a %ROWTYPE argument > Clean up Package USE_SAMPLES dropped. Table SAMPLES dropped.
So, with ALL_ARGUMENTS, "INPUT_SAMPLE" appears as "PL / SQL RECORD" without reference to "samples% ROWTYPE". And there is no such type in DBA_PLSQL_TYPES.
How can I get the declared type of this procedure in this form?
GETSAMPLE INPUT_SAMPLE IN SAMPLES%ROWTYPE
Chris source share