Я выполнил процедуру в пакете для ввода данных в таблицу с использованием таблицы PL / SQL.
Я поместил в код некоторые данные для выполнения из пакета и проверил, что процедура работает, но я не знаю, как выполнить его с рабочего листа с данными, которые я ввожу.
CREATE TABLE TB_CRUD_MAC
( "K_CODIGO" NUMBER(10,0),
"A_NUMNIT" VARCHAR2(11 BYTE),
"N_NOMBRE" VARCHAR2(11 BYTE),
"N_APELLI" VARCHAR2(11 BYTE),
"F_FECHA" DATE,
"I_ESTADO" VARCHAR2(1 BYTE),
"K_CLASIF" VARCHAR2(1 BYTE)
)
create or replace PACKAGE PK_CRUD_MAC AS
TYPE R_REGISTRO IS RECORD (
codigo TB_CRUD_MAC.K_CODIGO%TYPE := K_CODIGO.nextval,
numnit TB_CRUD_MAC.A_NUMNIT%TYPE,
nombre TB_CRUD_MAC.N_NOMBRE%TYPE,
apelli TB_CRUD_MAC.N_APELLI%TYPE,
fecha TB_CRUD_MAC.F_FECHA%TYPE,
estado TB_CRUD_MAC.I_ESTADO%TYPE,
clasif TB_CRUD_MAC.K_CLASIF%TYPE
);
TYPE T_REGISTRO IS TABLE OF R_REGISTRO;
PROCEDURE PR_INSERT_LISTA (PT_REGISTRO IN OUT T_REGISTRO);
END;
create or replace PACKAGE BODY PK_CRUD_MAC AS
PROCEDURE PR_INSERT_LISTA (PT_REGISTRO IN OUT T_REGISTRO)
IS
BEGIN
PT_REGISTRO := T_REGISTRO();
PT_REGISTRO.extend(3);
PT_REGISTRO(1).nombre := 'Andres';
PT_REGISTRO(2).nombre := 'Martinez';
INSERT INTO TB_CRUD_MAC VALUES (K_CODIGO.nextval, '123', PT_REGISTRO(1).nombre, 'AAA', '28/03/00', '1', '1');
INSERT INTO TB_CRUD_MAC VALUES (K_CODIGO.nextval, '123', PT_REGISTRO(2).nombre, 'AAA', '28/03/00', '1', '1');
END;
END;
Редактировать: я пытаюсь, но не работает:
DECLARE
reg PK_CRUD_MAC.T_REGISTRO := PK_CRUD_MAC.T_REGISTRO();
BEGIN
reg().extend;
reg(1).nombre := 'AAA';
PK_CRUD_MAC.PR_INSERT_LISTA(reg);
END;
Ошибка: PLS-00355: использование таблицы pl / sql в этом контексте запрещено