【发布时间】:2021-12-11 04:52:42
【问题描述】:
希望有人可以帮助我,我遇到了这个错误,但我不确定我做错了什么。我创建了这个程序,它将以下信息插入到银行的“存款”表中:序列号、个人号码、帐号、存款金额和日期)。该程序还应该在新存款后打印出总余额。
create or replace procedure do_insättning (
p_radnr kontoägare.radnr NUMBER(9),
p_pnr bankkund.pnr VARCHAR(11),
p_knr konto.knr NUMBER(8),
p_belopp insättning.belopp NUMBER(10,2),
p_datum insättning.datum DATE,
p_saldo konto.saldo NUMBER(10,2))
is
begin
insert into kontoägare(radnr)
values(p_radnr);
insert into bankkund (pnr)
values(p_pnr);
insert into konto(knr)
values(p_knr);
insert into insättning(belopp)
values(p_belopp);
insert into insättning(datum)
values(sysdate);
insert into konto(saldo)
values(p_saldo);
commit;
dbms_output.put_line('Saldot är nu = ' || p_belopp + p_saldo);
end;
/
当我以这种方式执行时,我得到错误数量的参数错误:
EXECUTE do_insättning (radnr_seq.NEXTVAL, '540126-1111', 123, 200, sysdate);
已编辑:
所以我编辑了查询并尝试将 saldo 添加为能够打印语句的变量,但这也不起作用。
create or replace procedure do_insättning (
p_radnr kontoägare.radnr%TYPE,
p_pnr bankkund.pnr%TYPE,
p_knr konto.knr%TYPE,
p_belopp insättning.belopp%TYPE
)
is
v_saldo konto.saldo%type;
begin
select saldo
into v_saldo
from konto;
insert into insättning(
radnr, pnr, knr, belopp, datum
) values (
p_radnr, p_pnr, p_knr, p_belopp, SYSDATE
);
dbms_output.put_line('Saldot är nu = ' || p_belopp + v_saldo);
end;
/
我收到“数字或值错误:字符到数字的转换错误”。
【问题讨论】:
-
您需要编辑问题并显示每个参数的类型。
-
看起来你有 6 个必需参数,你只传递了 5 个。
-
但是 Andrew 是对的,该过程需要六个参数,最后一个参数是 p_saldo,但您调用它时使用了五个以日期 (p_datum) 结尾的参数。因此,DBMS 正确地抱怨您使用错误数量的参数调用过程。
-
那又怎样?如果您声明了 6 个参数,则必须传递 6 个参数(因为它们都没有 DEFAULT 值)。
-
请提出一个新问题。