插入到表SQLDev中
我正试图插入到一个表中。我是新手,正在努力学习。我正在使用SQLDEV。我相信这一定是嵌套循环的一段时间,但我就是想不出来。该表适用于员工及其家属。我只是想设置序号。例如,每个BREL_代码为“E”序号的人都应该设置为1。在这之后,数字应该增加1,直到达到一个新的PIDM,然后循环应该重新开始并重复这个过程。例如序号列中的前9行应为1,2,3,4,2,1,2,1,1插入到表SQLDev中,sql,oracle,Sql,Oracle,我正试图插入到一个表中。我是新手,正在努力学习。我正在使用SQLDEV。我相信这一定是嵌套循环的一段时间,但我就是想不出来。该表适用于员工及其家属。我只是想设置序号。例如,每个BREL_代码为“E”序号的人都应该设置为1。在这之后,数字应该增加1,直到达到一个新的PIDM,然后循环应该重新开始并重复这个过程。例如序号列中的前9行应为1,2,3,4,2,1,2,1,1 Sample Data: (PZRBENE_PIDM,PZRBENE_SEQ_NO,PZRBENE_BENE_PIDM,PZRBE
Sample Data:
(PZRBENE_PIDM,PZRBENE_SEQ_NO,PZRBENE_BENE_PIDM,PZRBENE_BENE_LAST_NAME,PZRBENE_BENE_FIRST_NAME,PZRBENE_BENE_MI,PZRBENE_BREL_CODE,PZRBENE_SEX_IND,PZRBENE_BIRTH_DATE,PZRBENE_SSN,PZRBENE_MEMBER_TYPE,PZRBENE_DEL_IND) values (33159,null,null,'Regr','Ken',null,'E','F',to_date('09-FEB-68','DD-MON-RR'),'111111111','N','N');
Insert into PZRBENE (PZRBENE_PIDM,PZRBENE_SEQ_NO,PZRBENE_BENE_PIDM,PZRBENE_BENE_LAST_NAME,PZRBENE_BENE_FIRST_NAME,PZRBENE_BENE_MI,PZRBENE_BREL_CODE,PZRBENE_SEX_IND,PZRBENE_BIRTH_DATE,PZRBENE_SSN,PZRBENE_MEMBER_TYPE,PZRBENE_DEL_IND) values (33159,null,null,'Reg','Den',null,'H','M',to_date('24-DEC-71','DD-MON-RR'),'222222222','D','N');
Insert into PZRBENE (PZRBENE_PIDM,PZRBENE_SEQ_NO,PZRBENE_BENE_PIDM,PZRBENE_BENE_LAST_NAME,PZRBENE_BENE_FIRST_NAME,PZRBENE_BENE_MI,PZRBENE_BREL_CODE,PZRBENE_SEX_IND,PZRBENE_BIRTH_DATE,PZRBENE_SSN,PZRBENE_MEMBER_TYPE,PZRBENE_DEL_IND) values (33159,null,null,'Regr','Lev',null,'C','M',to_date('12-NOV-10','DD-MON-RR'),'333333333','D','N');
Insert into PZRBENE (PZRBENE_PIDM,PZRBENE_SEQ_NO,PZRBENE_BENE_PIDM,PZRBENE_BENE_LAST_NAME,PZRBENE_BENE_FIRST_NAME,PZRBENE_BENE_MI,PZRBENE_BREL_CODE,PZRBENE_SEX_IND,PZRBENE_BIRTH_DATE,PZRBENE_SSN,PZRBENE_MEMBER_TYPE,PZRBENE_DEL_IND) values (33159,null,null,'Reger','Ja',null,'C','M',to_date('12-AUG-05','DD-MON-RR'),'444444444','D','N');
Insert into PZRBENE (PZRBENE_PIDM,PZRBENE_SEQ_NO,PZRBENE_BENE_PIDM,PZRBENE_BENE_LAST_NAME,PZRBENE_BENE_FIRST_NAME,PZRBENE_BENE_MI,PZRBENE_BREL_CODE,PZRBENE_SEX_IND,PZRBENE_BIRTH_DATE,PZRBENE_SSN,PZRBENE_MEMBER_TYPE,PZRBENE_DEL_IND) values (33161,null,null,'Lace','Hary','C','H','M',to_date('15-SEP-47','DD-MON-RR'),'555555555','D','N');
Insert into PZRBENE (PZRBENE_PIDM,PZRBENE_SEQ_NO,PZRBENE_BENE_PIDM,PZRBENE_BENE_LAST_NAME,PZRBENE_BENE_FIRST_NAME,PZRBENE_BENE_MI,PZRBENE_BREL_CODE,PZRBENE_SEX_IND,PZRBENE_BIRTH_DATE,PZRBENE_SSN,PZRBENE_MEMBER_TYPE,PZRBENE_DEL_IND) values (33161,null,null,'Love','Rose','M','E','F',to_date('10-FEB-51','DD-MON-RR'),'666666666','N','N');
Insert into PZRBENE (PZRBENE_PIDM,PZRBENE_SEQ_NO,PZRBENE_BENE_PIDM,PZRBENE_BENE_LAST_NAME,PZRBENE_BENE_FIRST_NAME,PZRBENE_BENE_MI,PZRBENE_BREL_CODE,PZRBENE_SEX_IND,PZRBENE_BIRTH_DATE,PZRBENE_SSN,PZRBENE_MEMBER_TYPE,PZRBENE_DEL_IND) values (33163,null,null,'Wilon','La','E','C','F',to_date('12-FEB-02','DD-MON-RR'),'777777777','D','N');
Insert into PZRBENE (PZRBENE_PIDM,PZRBENE_SEQ_NO,PZRBENE_BENE_PIDM,PZRBENE_BENE_LAST_NAME,PZRBENE_BENE_FIRST_NAME,PZRBENE_BENE_MI,PZRBENE_BREL_CODE,PZRBENE_SEX_IND,PZRBENE_BIRTH_DATE,PZRBENE_SSN,PZRBENE_MEMBER_TYPE,PZRBENE_DEL_IND) values (33163,null,null,'Wilson','Janet',null,'E','F',to_date('01-JAN-64','DD-MON-RR'),'888888888','N','N');
Insert into PZRBENE (PZRBENE_PIDM,PZRBENE_SEQ_NO,PZRBENE_BENE_PIDM,PZRBENE_BENE_LAST_NAME,PZRBENE_BENE_FIRST_NAME,PZRBENE_BENE_MI,PZRBENE_BREL_CODE,PZRBENE_SEX_IND,PZRBENE_BIRTH_DATE,PZRBENE_SSN,PZRBENE_MEMBER_TYPE,PZRBENE_DEL_IND) values (33164,null,null,'Choski','Jon',null,'E','M',to_date('14-MAR-52','DD-MON-RR'),'123456789','N','N');
Insert into PZRBENE (PZRBENE_PIDM,PZRBENE_SEQ_NO,PZRBENE_BENE_PIDM,PZRBENE_BENE_LAST_NAME,PZRBENE_BENE_FIRST_NAME,PZRBENE_BENE_MI,PZRBENE_BREL_CODE,PZRBENE_SEX_IND,PZRBENE_BIRTH_DATE,PZRBENE_SSN,PZRBENE_MEMBER_TYPE,PZRBENE_DEL_IND) values (33169,null,null,'Parck','Wilim','G','C','M',to_date('09-MAY-03','DD-MON-RR'),'99999999','D','N');
My Code:
update pzrbene
set pzrbene_seq_no = 1
where pzrbene_brel_code = 'E';
*/
set serveroutput on:
Declare
cursor p_cur is
select pzrbene_seq_no,pzrbene_pidm
from pzrbene
where pzrbene_brel_code <> 'E'
order by pzrbene_pidm;
p_pidm PZRBENE.PZRBENE_PIDM%TYPE;
p_seq_no number := 0;
p_brel_code pzrbene.pzrbene_brel_code%TYPE;
Begin
open p_cur;
fetch p_cur into p_seq_no,p_pidm ;
while p_cur%FOUND
LOOP
update pzrbene
SET PZRBENE_SEQ_NO = p_seq_no + 1 where p_pidm = pzrbene.pzrbene_pidm and p_brel_code= pzrbene_brel_code;
fetch p_cur into p_seq_no,p_pidm;
end loop;
end;
/
示例数据:
(PZRBENE和PIDM,PZRBENE和PIDM,PZRBENE和BENE和BENE和PIDM,PZRB苯和BENE和BENE和最后一个名字,PZRB苯和BENE和BENE和第一个名字,PZRB苯和PIDM,PZRBENE和PIDM,PZRB苯和BENE和BENE和PIDM,PZRB苯和BENE和BENE和最后一个名字,PZZRB苯和他们和他们的名字,PZRB苯和他们和他们和他们的第一个名字,PZRB苯和他们和他们的名字,PZRB烯和他们和他们的名字,PZRB苯和他们和他们的名字,PZZZRB苯和他们和他们和他们的名字,PZZRB烯和他们,PZRB苯,PZRB苯和他们和他们和你们们和你们们和你们们和你们们,PZRB苯,PZRB苯,PZRB烯和你们们和他们的;
插入到PZRBENE中(PZRBENE和PIDM,PZRBENE和BENE和PIDM,PZRBENE和BENE和PIDM,PZRB苯和BENE和他们的姓姓,PZRB苯和他们的第一个名字,PZRB苯和他们的名字,PZRBENE和PIDM,PZZRB苯和BENE和BENE和PIDM,PZZZRB苯和BENE和BENE和他们的最后一个名字,PZZZZRB苯和他们的名字,PZRB苯和他们和他们的名字,他们的名字,第一个名字,第一个名字,名字,PZRB苯和他们和他们和他们和他们的名字,PZRB苯和他们和他们的第一个名字,他们的名字,他们的名字,PZZZZZRB苯和他们和他们和他们的名字,他们的名字,他们的名字,他们的名字,PZZZZZZRB苯和他们和他们和他们和他们和他们的"N",;
插入到PZRBENE中(PZRBENE的PIDM,PZRBENE的序列号,PZRBENE的BENE的PIDM,PZRBENE的BENE的最后一个名字,PZRB苯的第一个名字,PZRB苯的BENE的第一个名字,PZRBENE的PIDM,PZRBENE的PiDZRBene的PIDM,PZZZRB苯的BENE的名字,PZZRB苯的名字,PZZRB烯的第一个名字,PZRB苯的名字,第一个名字,PZRB苯的名字,PZRB苯的第一个名字,名字,PZRB苯的名字,名字,PZZRB苯的第一个名字,PZRB烯的名字,PZRB烯的名字,PZRB苯的第一个名字,PZRB烯的名字,PZZRB苯的名字,PZRB烯的名字,PZZZRB苯的名字,PZRB苯的名字,PZRB","N",;
插入到PZRBENE中(PZRBENE的PIDM,PZRBENE的序列号,PZRBENE的BENE的PIDM,PZRBENE的BENE的姓姓,PZRB苯的BENE的名字,PZRB苯的第一个名字,PZRBENE的PIDM,PZRBENE的PZRBENE的BZZRBene的BENE的BENE的名字,PZZZRB苯的名字,PZRB苯的名字,第一个名字,第一个名字,PZRB苯的名字,第一个名字,名字,PZRB苯的名字,PZRB苯的名字,PZRB苯的名字,PZRB苯的名字,PZZRB烯的名字,PZRB苯的名字,PZRB烯的名字,PZRB烯的名字,PZRB烯的名字,PZRB苯的名字,PZRB烯的第一个名字,PZRB烯的名字,PZRB烯的名字,PZRB烯D’,‘N’;
插入到PZRB苯中(PZRB苯的PIDM,PZRB苯的序列号,PZRB苯的BENE的PIDM,PZRB苯的BENE的BENE的最后一个名字,PZRB苯的第一个名字,PZRB苯的BENE的第一个名字,PZRB苯的BENE的名字,PZRB苯的PiZRB苯的PiDZRB苯的名字,PZRB苯的名字,PZRB苯的名字,PZRB苯的第一个名字,第一个名字,PZRB苯的名字,PZRB苯的名字,PZRB苯的第一个名字,PZRB苯的名字,PZRB苯的名字,名字,PZRB苯的名字,PZRB苯的名字,PZRB苯的第一个名字,PZRB苯的名字,PZRB苯的名字,PZRB苯的名字,PZRB苯的名字,PZRB苯的名字,PZRB苯的名字,PZRB苯的第一个名字,P","D","N",;
插入到PZRBENE(PZRBENE的PIDM,PZRBENE的序列号,PZRBENE的BENE的PIDM,PZRBENE的BENE的姓姓,PZRB苯的BENE的名字,PZRB苯的第一个名字,PZRBENE的PIDM,PZRBENE的PZRBENE的PZRBENE的BENE的名字,PZZRB苯的名字,PZRB苯的名字,第一个名字,第一个名字,PZRB苯的名字,名字,PZRB苯的名字,名字,PZRB苯的第一个名字,PZRB苯的名字,PZRB苯的名字,PZZRB苯的名字,PZZRB烯的名字,PZRB苯的名字,PZRB烯的名字,PZRB烯的第一个名字,PZRB烯的名字,PZRB苯的名字,米,PZRB烯的名字,PZRB烯的名字,PZZRB烯的名字","N","N",;
插入到PZRBENE中(PZRBENE的PIDM,PZRBENE的序列号,PZRBENE的BENE的PIDM,PZRB苯的BENE的最后一个名字,PZRB苯的名字,PZRB苯的第一个名字,PZRBENE的名字,PZRBENE的PidZZRBene的PZZRBene的BENE的名字,PZZRB苯的名字,PZRB苯的第一个名字,第一个名字,PZZZRB苯的名字,PZRB苯的第一个名字,名字,PZRB苯的第一个名字,PZRB苯的名字,PZRB苯的第一个名字,PZRB苯的名字,PZRB苯的名字,PZRB苯的第一个名字,PZRB烯的名字,PZRB苯的名字,PZRB苯的名字,PZRB苯的名字,PZRB苯的名字,PZZRB苯的名字,PZRB苯的名字,","D","N",;
插入PZRBENE(PZRBENE的PIDM,PZRBENE的序列号,PZRBENE的贝尼的PIDM,PZRBENE的贝尼的姓姓,PZRB苯的贝尼的姓名,PZRB苯的贝尼的第一名,PZRB苯的名字,PZRBENE的PIDM,PZRB苯的插入到PZZRB苯(PZZRBene的贝尼的名字,PZRB贝尼的名字,PZRB苯的名字,PZRB苯的名字,第一名,名字,PZRB贝尼的名字,名字,PZRB苯的名字,PZRB贝尼的第一名,PZRB贝尼的名字,名字,PZRB苯的名字,PZRB烯的第一名,PZRB苯的名字,PZRB苯的名字,PZRB烯的名字,PZRB烯的名字,PZRB贝尼的名字,PZRB烯的名字,PZRB贝尼的名字,N’,‘N’;
插入到PZRBENE中(PZRBENE和PIDM,PZRBENE和BENE和PIDM,PZRBENE和BENE和PIDM,PZRB苯和BENE和他们最后一个名字,PZRB苯和和他们第一个名字,PZRBENE和他们的名字,PZRBENE和他们的名字,PZRBENE和他们的名字,PZZRB苯和他们的名字,他们和他们的名字,他们的名字,他们和他们的第一个名字,他们的名字,他们的名字,他们的名字,他们的名字,他们的名字,他们的名字,他们的名字,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,米,N’,‘N’;
插入到PZRBENE中(PZRBENE和PIDM,PZRBENE和BENE和PIDM,PZRB苯和贝尼和PIDM,PZRB苯和贝尼和最后一个名字,PZRB苯和第一个名字,PZRB苯和第一个名字,PZRB苯和第一个名字,PZRBENE和PiZRBene和PIDM,PZZZRB苯和贝尼和贝尼和贝尼和贝尼和名字,PZZZRB苯和贝尼和贝尼和贝尼和第一个名字,PZRB苯和贝尼和第一个名字,PZZRB苯和贝尼和贝尼和第一个名字,PZZZRB苯和贝尼和贝尼和第一个名字,PZZRB苯和贝尼和贝尼和第一个名字,PZZRB苯和和和和他们他们他们他们他们他们和名字,PZZRB苯和他们和他们和他们他们和他们和他们他们他们他们他们他们和他们和和","D","N",;
我的代码:
更新pzrbene
设置pzrbene_seq_no=1
其中pzrbene_brel_代码='E';
*/
将serveroutput设置为打开:
声明
光标p_cur为
选择pzrbene_seq_no,pzrbene_pidm
来自pzrbene
其中pzrbene_brel_代码为“E”
由pzrbene_pidm订购;
p_-pidm-PZRBENE.PZRBENE_-pidm%型;
序号:=0;
p_-brel_代码pzrbene.pzrbene_-brel_代码%类型;
开始
打开p_cur;
将p_cur取到p_seq_no,p_pidm;
而p_cur%已找到
环
更新pzrbene
设置PZRBENE_SEQ_NO=p_SEQ_NO+1,其中p_pidm=PZRBENE.PZRBENE_pidm,p_brel_code=PZRBENE_brel_code;
将p_cur取到p_seq_no,p_pidm;
端环;
结束;
/
这个PLSQL块对我有效。这里没有什么特别的,只是适当的订购问题。
我假设,成员类型为'N'的人是老板
declare
v_counter number := 0;
cursor cur is select pzrbene_pidm pidm, pzrbene_brel_code brel_code
from pzrbene order by pzrbene_pidm, pzrbene_member_type desc
for update;
begin
for rec in cur loop
if rec.brel_code = 'E' then
v_counter := 1;
else
v_counter := v_counter + 1;
end if;
update pzrbene set pzrbene_seq_no = v_counter where current of cur;
end loop;
end;
执行后的输出:
select pzrbene_pidm pidm, pzrbene_seq_no,
pzrbene_bene_last_name||' '||pzrbene_bene_first_name bene_name,
pzrbene_brel_code brel_code, pzrbene_member_type member_type
from pzrbene
order by pzrbene_pidm, pzrbene_member_type desc
PIDM PZRBENE_SEQ_NO BENE_NAME BREL_CODE MEMBER_TYPE
------ -------------- ------------------------------------ --------- -----------
33159 1 Regr Ken E N
33159 2 Reg Den H D
33159 3 Regr Lev C D
33159 4 Reger Ja C D
33161 1 Love Rose E N
33161 2 Lace Hary H D
33163 1 Wilson Janet E N
33163 2 Wilon La C D
33164 1 Choski Jon E N
33169 2 Parck Wilim C D
您可能希望将顺序更改为更复杂的内容,例如:
order by pzrbene_pidm,
case when pzrbene_member_type='N' then 1 else 2 end, pzrbene_bene_brel_code
这取决于您,我不知道这些列的含义,当其余的列在两行之间相等时,哪些列更重要,哪些列更少。您的代码在哪里?您的数据是如何排序的?您提供的示例数据中没有任何内容说明给定的
PIDM
,哪一行先到,下一行等。此外,是否有主键或其他唯一性可以识别每一行?我不知道;在那里看不到插入开始,你为什么希望它插入?