Sql 使用存储过程在一个表中输入新值时自动向另一个表添加值

Sql 使用存储过程在一个表中输入新值时自动向另一个表添加值,sql,sql-server,stored-procedures,sql-server-2012,Sql,Sql Server,Stored Procedures,Sql Server 2012,我有一张名为customer的表格,上面有以下列: C_id| Acct_no| name| h_add| country| ph_no| company| sal| loan_no| balance| 贷款编号=pK 表2: bank_details2 loan_no| r_interest| loan_amt loan_date| time_yr| intrst 利息是使用成功的proc自动计算的 我创建了另一个过程,在客户中添加贷款编号时,自动将贷款编号添加到银行详细信息2中 crea

我有一张名为customer的表格,上面有以下列:

C_id| Acct_no| name| h_add| country| ph_no| company| sal| loan_no| balance|
贷款编号=pK 表2:

bank_details2 loan_no| r_interest| loan_amt loan_date| time_yr| intrst
利息是使用成功的proc自动计算的

我创建了另一个过程,在客户中添加贷款编号时,自动将贷款编号添加到银行详细信息2中

create procedure proc_bank2 

as

begin

declare @p as int

--if 

select @p=loan_no from customer where loan_no not in (select loan_no from bank_details2)

return @@rowcount

if @@ROWCOUNT<>0

update bank_details2 set loan_no=@p

end

exec proc_bank2
虽然创建过程成功,但未添加值

有人能指出我犯的错误/给出解决方案吗

return @@rowcount
返回,这意味着它退出存储过程,而不执行剩余部分。删除它。

当您使用Return时,所有事情都已完成,之后将不会执行。 所以试试这个:

create procedure proc_bank2 

as

begin

declare @p as int

--if 

select @p=loan_no from customer where loan_no not in (select loan_no from bank_details2)



if @@ROWCOUNT<>0

update bank_details2 set loan_no=@p
return @@rowcount
end

exec proc_bank2

根据以上答案,您的sp存在多个问题:

select @p=loan_no from customer where loan_no not in (select loan_no from bank_details2)
将@p的值设置为它找到的最后一个不匹配的贷款\u no,而不管客户是谁

update bank_details2 set loan_no=@p
没有where子句,因此将更新表中的每一行。我怀疑,但不确定您是否真的想在此处插入


理想情况下,向客户添加贷款号的过程应将其添加到银行详情2表中。如果不可能,则应重写proc proc_bank2以接受参数loan_no,该参数在第一个proc调用时传递。然后,您可以检查此贷款编号并将其作为必需项插入。

SP将在返回时终止,该行之后的代码将不会执行。@Amireza我按照您所说的做了,但表bank\u details2中的贷款编号已被最近在customer中添加的贷款编号替换。16 10 100 2009-12-12 5 50 16 15 300 2009-11-12 9 405 16 5 200 2009-08-08 7 70 16 15 1500 2009-09-08 5 1125 16 15 1500 2010-10-05 5 1125