如何使用存储过程通过在另一个 table 中查找列的值存在来更新一个 table 中的批量记录?

How to Update bulk records in one table by finding the column's value existence in another table using Stored procedures?

我有两个 table,即 'loan_details''loan_mapping'。我需要通过 loan_details table 中存在的值设置 loan_mapping table 的 mod_id。因此,仅当 'loan_mapping' table 记录的 loan_number 列出现在 'loan_detail' 时,它才会批量更新 'loan_mapping' table 的记录(20K 条记录) table 条记录。 (我的意思是如果使用 loan_number 查找成功)

两个table的定义如下:

CREATE TABLE public.loan_details 
(
  loan_number   bigint NOT NULL,
  crp_lob       integer,
  mod_id        integer,
  CONSTRAINT loan_details_pkey PRIMARY KEY (loan_number)
);

CREATE TABLE public.loan_mapping 
(
  loan_number           bigint NOT NULL,
  spoc_id               integer NOT NULL,
  assigned_datetime     timestamp without time zone,
  loan_spoc_map_id      integer NOT NULL DEFAULT nextval ('lsa_loan_spoc_mapping_loan_spoc_map_id_seq'::regclass),
  line_of_business_id   integer,
  mod_id                integer,
  CONSTRAINT loan_spoc_mapping_pk PRIMARY KEY (loan_spoc_map_id),
  CONSTRAINT fk_loan_spoc_loan_number FOREIGN KEY (loan_number) 
    REFERENCES public.loan_details (loan_number)
);

所以,我需要精确的存储过程来执行我总结的问题中提到的所需更新。

我看不出有任何理由在这里使用存储过程:

update loan_mapping lm
  set mod_id = ld.mod_id
from loan_details ld  
where ld.loan_number = lm.loan_number;