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;
meine Sys/Db admin & Developper Notitzen - wer Rechtschreibfehler findet darf sie behalten ... my Sys/Db Admin and developper notes - I don't care about typos
Monday, October 07, 2019
Oracle Sql Developper Debuggen:
Stored Procedure rechte Maustaste Debuggen, dann für Debug kompelieren
Breakpoint durch Click in linke breite Leiste
Rechte zum Oracle Debuggen:
grant debug connect session to myDebugUser;
grant debug any procedure to myDebugUser;
-- Wenn: ORA-24247: Netzwerkzugriff von Zugriffskontrollliste abgelehnt
grant execute on DBMS_DEBUG_JDWP to myDebugUser;
Breakpoint durch Click in linke breite Leiste
Rechte zum Oracle Debuggen:
grant debug connect session to myDebugUser;
grant debug any procedure to myDebugUser;
-- Wenn: ORA-24247: Netzwerkzugriff von Zugriffskontrollliste abgelehnt
grant execute on DBMS_DEBUG_JDWP to myDebugUser;
Thursday, October 03, 2019
oracle substr stored proc
create or replace
PROCEDURE TESTHM AS
BEGIN
dbms_output.put_line ('TestHm');
DECLARE str VARCHAR2(4000);
BEGIN
FOR r IN (SELECT * FROM myTable where rownum<=5)
LOOP
str:=SUBSTR(r.myStrField,1, 10);
dbms_output.put_line( str );
dbms_output.put_line( r.myStrField);
END LOOP;
END;
dbms_output.put_line (CURRENT_DATE);
END TESTHM;
PROCEDURE TESTHM AS
BEGIN
dbms_output.put_line ('TestHm');
DECLARE str VARCHAR2(4000);
BEGIN
FOR r IN (SELECT * FROM myTable where rownum<=5)
LOOP
str:=SUBSTR(r.myStrField,1, 10);
dbms_output.put_line( str );
dbms_output.put_line( r.myStrField);
END LOOP;
END;
dbms_output.put_line (CURRENT_DATE);
END TESTHM;
oracle stored procedure loop over records (withouth cursor)
create or replace
PROCEDURE TESTHM AS
BEGIN
dbms_output.put_line ('TestHm');
FOR r IN (SELECT * FROM myTable)
LOOP
dbms_output.put_line( r.myField );
END LOOP;
dbms_output.put_line (CURRENT_DATE);
END TESTHM;
set serveroutput on;
execute testhm;
PROCEDURE TESTHM AS
BEGIN
dbms_output.put_line ('TestHm');
FOR r IN (SELECT * FROM myTable)
LOOP
dbms_output.put_line( r.myField );
END LOOP;
dbms_output.put_line (CURRENT_DATE);
END TESTHM;
set serveroutput on;
execute testhm;
Subscribe to:
Posts (Atom)