Home » SQL & PL/SQL » SQL & PL/SQL » Update table procedure through pl sql using double loop (Oracle)
Update table procedure through pl sql using double loop [message #640498] |
Wed, 29 July 2015 11:10 |
|
freestyle
Messages: 19 Registered: July 2015 Location: Bordeaux
|
Junior Member |
|
|
Assuming that I have only one table : members_tbl which columns are :SN, FN, DB, IDDBL,FLAG, DBLCRIT I need to update the table if some conditions are OK with this algorithm :
ID_DUP := 1;
FOR (i in 1 to NumberOfrow(members_tbl)) THEN
{
FOR (j in (i+1) to NumberOfrow(members_tbl)) THEN
{
IF(members_tbl(i).IDDBL IS NULL) THEN
members_tbl(i).IDDBL := ID_DUP;
IF (((members_tbl(i).DB ==members_tbl(j).DB) AND (members_tbl(i)SN == members_tbl(j).SN))
AND (members_tbl(i).FN == members_tbl(j).FN))
AND (members_tbl(j).IDDBL IS NULL)) THEN
{
members_tbl(j).IDDBL := ID_DUP;
members_tbl(i).FLAG := 1;
members_tbl(j).FLAG := 1;
members_tbl(i).DBLCRIT:= 1;
members_tbl(j).DBLCRIT:= 1;
}
}
ID_DUP := ID_DUP + 1;
}
Is there a way to write this algorithm in a pl/sql procedure ? I'm relatively new to PL/SQL and i've never written a stored procedure.
Thanks in advance.
|
|
|
|
|
|
|
|
Re: Update table procedure through pl sql using double loop [message #640509 is a reply to message #640507] |
Wed, 29 July 2015 14:42 |
|
freestyle
Messages: 19 Registered: July 2015 Location: Bordeaux
|
Junior Member |
|
|
Michel Cadot wrote on Wed, 29 July 2015 20:44
What are "potential duplicates"?
BlackSwan wrote on Wed, 29 July 2015 19:15how will you or I know when correct answer has been posted?
Post a test case we can work with.
Ok Here is the test case :
to be more comprensive, SN = SNAME, FN = FNAME, DB=DBIRTH
CREATE TABLE MEMBERS_TBL
(
IDM NUMBER(9) NOT NULL
, SNAME VARCHAR2(20)
, FNAME VARCHAR2(20)
, DBIRTH VARCHAR2(15)
, IDDBL NUMBER(10)
, FLAG SMALLINT
, DBLCRIT SMALLINT
);
here are the data:
Insert into members_tbl (IDM,SNAME,FNAME,DBIRTH,IDDBL,FLAG,DBLCRIT) values (125,'BOLOREY','JEANNE','11/05/1955',NULL,NULL,NULL);
Insert into members_tbl (IDM,SNAME,FNAME,DBIRTH,IDDBL,FLAG,DBLCRIT) values (126,'BOLLOREY','JEANNE','11/05/1955',NULL,NULL,NULL);
Insert into members_tbl (IDM,SNAME,FNAME,DBIRTH,IDDBL,FLAG,DBLCRIT) values (153,'BALORE','GIANNE','11/05/1955',NULL,NULL,NULL);
Insert into members_tbl (IDM,SNAME,FNAME,DBIRTH,IDDBL,FLAG,DBLCRIT) values (223,'ABOLLOREYY','JEANNE','11/05/1955',NULL,NULL,NULL);
Insert into members_tbl (IDM,SNAME,FNAME,DBIRTH,IDDBL,FLAG,DBLCRIT) values (225,'FIABLE','MARINE','25/04/1963',NULL,NULL,NULL);
Insert into members_tbl (IDM,SNAME,FNAME,DBIRTH,IDDBL,FLAG,DBLCRIT) values (228,'FAIBLE','MARYANE','25/04/1963',NULL,NULL,NULL);
Insert into members_tbl (IDM,SNAME,FNAME,DBIRTH,IDDBL,FLAG,DBLCRIT) values (230,'FAIBLE','MARINE','25/04/1963',NULL,NULL,NULL);
Insert into members_tbl (IDM,SNAME,FNAME,DBIRTH,IDDBL,FLAG,DBLCRIT) values (235,'LIPARK','JACQLINE','20/12/1939',NULL,NULL,NULL);
Insert into members_tbl (IDM,SNAME,FNAME,DBIRTH,IDDBL,FLAG,DBLCRIT) values (236,'ILIPARC','JACQUELYNE','20/12/1939',NULL,NULL,NULL);
Insert into members_tbl (IDM,SNAME,FNAME,DBIRTH,IDDBL,FLAG,DBLCRIT) values (237,'LIPARC','JACQUELHINE','20/12/1939',NULL,NULL,NULL);
Insert into members_tbl (IDM,SNAME,FNAME,DBIRTH,IDDBL,FLAG,DBLCRIT) values (240,'RINTET','MALIKA','07/08/1954',NULL,NULL,NULL);
Insert into members_tbl (IDM,SNAME,FNAME,DBIRTH,IDDBL,FLAG,DBLCRIT) values (241,'GRISION','RAUGER','26/10/1931',NULL,NULL,NULL);
Insert into members_tbl (IDM,SNAME,FNAME,DBIRTH,IDDBL,FLAG,DBLCRIT) values (242,'GRISION','ROGER','26/10/1931',NULL,NULL,NULL);
Insert into members_tbl (IDM,SNAME,FNAME,DBIRTH,IDDBL,FLAG,DBLCRIT) values (245,'GRESION','RAUJER','26/10/1931',NULL,NULL,NULL);
There are some rows above that have to be merged by making the approximation of strings (through Jaro_Winkler in this case)and by checking the dates of birth.
These variables (IDDBL, FLAG, DBLCRIT) are used :
- To mark the similarity of character(IDDBL),
- To check that the box has already been verified(FLAG) if it is not duplicate, FLAG wille have NULL value,
- And to report The duplicate row has been identified(DBLCRIT)
|
|
|
|
|
|
|
|
Goto Forum:
Current Time: Wed Apr 24 22:57:46 CDT 2024
|