我创建了这个过程,但这只会插入一行
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
我怎样才能在存储过程中做到这一点 谢谢你
您不需要存储过程,而是生成行以及像这样的插入语句:
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;