DECLARE alert_button number; chararray VARCHAR2(52); digitarray VARCHAR2(20); ischar BOOLEAN; isdigit BOOLEAN; ispunct BOOLEAN; m INTEGER; n BOOLEAN; i integer; j integer; punctarray VARCHAR2(25); BEGIN digitarray := '0123456789'; chararray := 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; punctarray := '!"#$%&()''*+,-/:;<=>?_'; if :block1.BARU is null then alert_button := Show_Alert('password'); go_item('block1.BARU'); raise form_trigger_failure; -- check for minimum password length elsif length(:block1.BARU)< 8 then alert_button := Show_Alert('panjang'); go_item('block1.BARU'); raise form_trigger_failure; -- check for common words ELSIF :block1.baru IN ('welcome', 'password', 'oracle', 'computer', 'abcdef') THEN alert_button := Show_Alert('biasa'); go_item('block1.BARU'); raise form_trigger_failure; end if; go_block('block1'); isdigit := FALSE; m := LENGTH(:block1.baru); FOR i IN 1..25 LOOP FOR j IN 1..m LOOP IF SUBSTR(:block1.baru,j,1) = SUBSTR(digitarray,i,1) THEN isdigit := TRUE; GOTO findchar; END IF; END LOOP; END LOOP; IF isdigit = FALSE THEN alert_button := Show_Alert('digit'); go_item('block1.BARU'); raise form_trigger_failure; END IF; <> ischar := FALSE; FOR i IN 1..LENGTH(chararray) LOOP FOR j IN 1..m LOOP IF SUBSTR(:block1.baru,j,1) = SUBSTR(chararray,i,1) THEN ischar := TRUE; GOTO findpunct; END IF; END LOOP; END LOOP; IF ischar = FALSE THEN alert_button := Show_Alert('char'); go_item('block1.BARU'); raise form_trigger_failure; END IF; <> ispunct := FALSE; FOR i IN 1..LENGTH(punctarray) LOOP FOR k IN 1..m LOOP IF SUBSTR(:block1.baru,j,1) = SUBSTR(punctarray,i,1) THEN ispunct := TRUE; GOTO endsearch; END IF; END LOOP; END LOOP; IF ispunct = FALSE THEN alert_button := Show_Alert('symbol'); go_item('block1.BARU'); raise form_trigger_failure; end if; <> FORMS_DDL('ALTER USER '||:block1.login||' IDENTIFIED BY '||:block1.BARU); commit; alert_button := Show_Alert('SUCCESS'); exit_form; END;