如何创建具有多个参数和多个插入语句的存储过程?

问题描述 投票:0回答:1

我创建了这个过程,但这只会插入一行

CREATE OR REPLACE PROCEDURE INSERT_HOSPITAL_PROGRAMS(HOSPITAL_ID IN INT, SAMPLE_ID IN INT , PROGRAM_ID IN INT ) IS

BEGIN
  Insert into HAJJ_HOSPITAL_PROGRAMS
   (ID, HOSPITAL_ID, SAMPLE_ID, PROGRAM_ID)
 Values
   (seq.nextval , HOSPITAL_ID, SAMPLE_ID, PROGRAM_ID);
END;

但是我需要在这样的过程中给出多个值

HOSPITAL_ID from 1 to 20 
SAMPLE_ID   from 1 to 10 
PROGRAM_ID  from 1 to 6 

和插入我需要这样:

ID   HOSPITAL_ID    SAMPLE_ID     PROGRAM_ID  
 1       1              1            1
 2       1              1            2
 3       1              1            3
 4       1              1            4
 5       1              1            5
 6       1              1            6
-----------------------------------------
 7       1              2            1
 8       1              2            2
 9       1              2            3
 10      1              2            4  
 11      1              2            5
 12      1              2            6
---------------------------------------

每个 HOSPITAL_ID 有 10 个 SAMPLES,从 1 到 10

每个样本有 6 个程序,从 1 到 6

我怎样才能在存储过程中做到这一点 谢谢你

oracle
1个回答
0
投票

您不需要存储过程,而是生成行以及像这样的插入语句:

INSERT INTO hajj_hospital_programs
SELECT seq.nextval,
       TRUNC((level-1) / (10 * 6) ) + 1, 
       MOD( TRUNC((level-1) / 6 ), 10) + 1, 
       MOD((level-1), 6) + 1
  FROM dual
CONNECT BY level <= 20 * 10 * 6;

COMMIT;
© www.soinside.com 2019 - 2024. All rights reserved.