create or replace PROCEDURE CreateAliasPaths AS
pos1 NUMBER:=0;
pos2 NUMBER:=0;
origName VARCHAR2(4000);
origSearchStr VARCHAR2(4000);
aliasName VARCHAR2(4000);
aliasPath VARCHAR2(4000);
BEGIN
dbms_output.put_line ('------------ CreateAliasPaths Beginn:' || TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS'));
FOR r IN (SELECT * FROM Table0) --for testing: where rownum<=3
LOOP
pos1:=INSTR(r.ALIAS,' ');
origName:=SUBSTR(r.ALIAS,1, pos1-1);
origSearchStr:='%' || origName || '%';
pos2:=INSTR(r.ALIAS,' ',pos1+1);
if (0=pos2) THEN
pos2:=LENGTH(r.ALIAS);
END IF;
LOOP
aliasName:=SUBSTR(r.ALIAS,pos1+1, pos2-pos1-1);
--dbms_output.put_line('AliasTabelle:' || r.ALIAS);
--dbms_output.put_line('originalName:' || origName || ',' || pos1 || ' ' || pos2 || ' aliasName:>' || aliasName || '<' );
FOR rRepro IN (SELECT * FROM table1 WHERE LOWER(PATH) like LOWER(origSearchStr))
LOOP
aliasPath:=REPLACE(rRepro.PATH, origName, aliasName);
--dbms_output.put_line('aliasPath:' || aliasPath );
UPDATE table1 SET ALIAS=rRepro.ALIAS || ' ' || aliasPath WHERE table1ID=rRepro.table1ID;
END LOOP;
--dbms_output.put_line( '-------------------------------------------------' );
pos1:=pos2;
EXIT WHEN (pos1>=LENGTH(r.ALIAS));
pos2:=INSTR(r.ALIAS,' ',pos1+1);
if (0=pos2) THEN
pos2:=LENGTH(r.ALIAS);
END IF;
END LOOP;
--dbms_output.put_line( '=============================================================================' );
END LOOP;
COMMIT;
dbms_output.put_line ('------------ CreateAliasPaths End:' || TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS'));
END CreateAliasPaths;
No comments:
Post a Comment