Sql 插入到表中并更新另一个表的过程

Sql 插入到表中并更新另一个表的过程,sql,oracle,Sql,Oracle,我到处寻找答案,但似乎没有人知道问题出在哪里。因此,我的过程应该在INSÄTTNING表中添加一行。有些键是参考键。当插入行时,它应该取P_BELOPP并用SALDO减去它,SALDO位于另一个名为KONTO的表中。新金额应添加到该列中,并替换旧金额。到目前为止,我的代码如下所示: create or replace procedure do_insättning( p_radnr in insättning.radnr%type, p_pnr in insättning.pnr%type, p

我到处寻找答案,但似乎没有人知道问题出在哪里。因此,我的过程应该在INSÄTTNING表中添加一行。有些键是参考键。当插入行时,它应该取P_BELOPP并用SALDO减去它,SALDO位于另一个名为KONTO的表中。新金额应添加到该列中,并替换旧金额。到目前为止,我的代码如下所示:

create or replace procedure do_insättning(
p_radnr in insättning.radnr%type,
p_pnr in insättning.pnr%type,
p_knr in insättning.knr%type,
p_belopp in insättning.belopp%type,
p_datum in insättning.datum%type) 
as

begin
insert into insättning(radnr,pnr,knr) 
values(select radnr from kontoägare,select pnr from bankkund, select knr from 
konto);
insert into insättning(belopp,datum)
values(p_belopp,p_datum);
update konto 
set saldo = saldo - p_belopp
where knr = p_radnr; 
dbms_output.put_line('Saldo: '||''||saldo);
end;
我得到ORA-00936:缺少表达式。我真的不明白这个表达哪里错了。

有人有什么建议吗?

您的问题是一个简单的语法错误。插入到…中没有VALUES子句或括号。。。选择构造。此外,SELECT语句必须是有效的查询

试试这个:

insert into insättning(radnr,pnr,knr) 
select t1.radnr 
      ,t2.pnr
      ,t3.knr
from       kontoägare t1
cross join bankkund   t2 
cross join konto.     t3

也许你不认为结果集是一个产品。因此,您需要重写FROM子句,以使用具有适当条件的内部JOIN子句,还可能使用WHERE子句。

首先是表
kontoägare
bankkund
konto
所需的所有公共列。对不起,先生,我不理解代码后面的部分:(我还收到一个新错误,上面写着“必须声明saldo”您的INSERT语句正在从三个表中选择值。但是您没有联接或筛选器,因此select语句将包含这些表的所有排列。如果每个表有两行,则将插入八行。如果您不希望出现这种结果,则需要根据业务逻辑联接表或筛选行。至于新错误,这意味着表KONTO没有名为SALDO的列。