podrías hacerlo declarando rowtype de la tabla (A1%ROWTYPE) pero no te lo aconsejo porque cualquier cambio en la estructura de la tabla podrá desmontarte el código que ya tengas hecho, por mi parte te recomiendo que declares TYPE con tabla de registros y utilices ese TYPE en el paso de parámetros.
Código SQL:
Ver original/*
* Creamos la tabla
*/
CREATE TABLE A1(
col1 NUMBER ,
col2 varchar2(20),
col3 NUMBER
);
/*
* Definimos un tipo de datos registro identico a la tabla
*/
TYPE T_A1 IS RECORD(
col1 A1.col1%TYPE ,
col2 A1.col2%TYPE ,
col3 A1.col3%TYPE
);
/*
* Definimos una tabla de registros T_A1
*/
TYPE T_TABLA_A1 IS TABLE OF T_A1 INDEX BY BINARY_INTEGER;
/*
* Procedimiento de inserción en A1
*/
CREATE OR REPLACE PROCEDURE P_INSERT_A1( P_TABLA_A1 IN T_TABLA_A1 ) IS
I BYNARY_INTEGER;
BEGIN
IF P_TABLA_A1.COUNT() > 0 THEN
I := P_TABLA_A1.FIRST();
LOOP
INSERT INTO A1(col1,col2,col3)
VALUES(P_TABLA_A1(I).col1,P_TABLA_A1(I).col2,P_TABLA_A1(I).col3);
EXIT WHEN I = P_TABLA_A1.LAST();
I := P_TABLA_A1.NEXT(I);
END LOOP;
END P_INSERT_A1;
Un saludo