我在一个程序包中做了一个数据插入过程,我想将它与RECORD TYPE一起使用,但是我不知道该怎么称呼它。
我希望至少能够使用null中的其他值输入“ codigo”
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,
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
);
PROCEDURE PR_INSERT_REGISTRO (P_R_REGISTRO R_REGISTRO);
END;
create or replace PACKAGE BODY PK_CRUD_MAC AS
PROCEDURE PR_INSERT_REGISTRO (P_R_REGISTRO R_REGISTRO)
IS
BEGIN
INSERT INTO TB_CRUD_MAC VALUES P_R_REGISTRO;
END;
END;
是的,你不能那样做。您必须传递完整的记录,例如:
declare
reg PK_CRUD_MAC.R_REGISTRO;
begin
reg.codigo := 6;
PK_CRUD_MAC.PR_INSERT_REGISTRO(reg);
end;
但是,如果您要做的只是插入与表列定义相同类型的记录,则无需创建自己的pl / sql记录。您可以执行以下操作:
create or replace PACKAGE PK_CRUD_MAC2 AS
PROCEDURE PR_INSERT_REGISTRO (P_R_REGISTRO TB_CRUD_MAC%ROWTYPE);
END;
create or replace PACKAGE BODY PK_CRUD_MAC2 AS
PROCEDURE PR_INSERT_REGISTRO (P_R_REGISTRO TB_CRUD_MAC%ROWTYPE)
IS
BEGIN
INSERT INTO TB_CRUD_MAC VALUES P_R_REGISTRO;
END;
END;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句