我有一个程序,在我的一个表中插入一行。
在过程中插入之后,我想将所有行都找到另一个表,然后,调用第二个表的插入过程。
所以我有所有第一个工作正常的程序
P_INSERT_TABLE1
INSERT INTO TABLE1
...
COMMIT;
FOR record_po IN (SELECT C3, ...
FROM T_TABLE2
WHERE id = v_id)
LOOP
P_INSERT_TABLE2(record_po.C3, ...);
END LOOP;
P_INSERT_TABLE2 的所有“in 参数”都是 VARCHAR2,所以我为每列创建一个“to_char”不是 varchar2:
P_INSERT_TABLE2(pi_id,
record_po.C3,
record_po.C4,
record_po.C5,
record_po.C6,
record_po.C7,
to_char(record_po.C8, 'DD/MM/YYYY');
这里,pi_id 是 VARCHAR2 中 P_INSERT_TABLE1 的 in 参数之一。
所以现在,我有这个错误信息:
Erreur(357,1): PLS-00306: number or args types wrong in the call of P_INSERT_TABLE2
我不明白,为什么 P_INSERT_TABLE2 不接受参数,而所有好的类型都按好顺序?
如果我将程序称为“ call P_INSERT_TABLE2(...)
”,则会出现以下错误:
Erreur(357,9): PLS-00103: Symbol "P_INSERT_TABLE2" instead one of this symbols : := . ( @ % ; immediate Symbole ":="
create or replace
PROCEDURE P_INSERT_TABLE2 (
pi_id IN VARCHAR2
,pi_C3 IN VARCHAR2
,pi_C4 IN VARCHAR2
,pi_C5 IN VARCHAR2
,pi_C6 IN VARCHAR2
,pi_C7 IN VARCHAR2
,pi_C8 IN VARCHAR2
,pmessage OUT NOCOPY VARCHAR2
)
感谢您的帮助。