如何测试程序中的多个参数是否正常工作?

时间:2019-04-16 08:55:59

标签: sql oracle procedure

我创建了使用乘法参数的过程。创建它的效果很好,但是当我使用它时,出现以下错误:

ORA-01400: cannot insert NULL into   ("SQL_LPMTLWJHENVGDRAKNUHFFMJYJ"."KONTO"."KNR") ORA-06512: at "SQL_LPMTLWJHENVGDRAKNUHFFMJYJ.AIFER_INSÄTTNING", line 4
ORA-06512: at "SQL_LPMTLWJHENVGDRAKNUHFFMJYJ.DO_INSÄTTNING", line 7
ORA-06512: at line 2
ORA-06512: at "SYS.DBMS_SQL", line 1721

我的代码:

 create or replace procedure do_insättning(
 p_pnr in insättning.pnr%type,
 p_knr in insättning.knr%type,
 p_belopp in insättning.belopp%type)
 is
 begin
 insert into insättning(radnr, pnr, knr, belopp, datum)
 values (radnr_seq.nextval, p_pnr, p_knr, p_belopp, sysdate);
 commit;
 dbms_output.put_line('Belopp på konto är '||get_saldo(p_knr));
 end;

并测试:

BEGIN
do_insättning('540126-1111', 123, 1000);
do_insättning('691124-4478', 124, 2000);
COMMIT;
END;
/

表结构:

 create table insättning (
 radnr number(9) not null,
 pnr varchar2(11) not null,
 knr number(8) not null,
 belopp number(10,2),
 datum date not null);

我的触发器:

create or replace trigger aifer_insättning
after insert 
on insättning
for each row
when (new.belopp is not null)
begin
update konto set saldo = saldo + :new.belopp;
end;
/

更新了触发器,但现在又出现了另一个错误:

ORA-02291: integrity constraint (SQL_BEFWFOGHQKTQKJYDJZCSUDFOO.KNRINSÄTTNING_FK) violated - parent key not found ORA-06512: at "SQL_BEFWFOGHQKTQKJYDJZCSUDFOO.DO_INSÄTTNING", line 7
ORA-06512: at line 3
ORA-06512: at "SYS.DBMS_SQL", line 1721

0 个答案:

没有答案