По-моему настало время немного отвлечься. Пока вы там перевариваете курсоры и все что к ним прилагается я вам пока расскажу о встроенных функциях PL/SQL. Если их хорошо знать, то можно писать очень эффективный код на PL/SQL. Сделаем так, я пропишу блок, а вы будете по мере изучения смотреть нужные строки! Поехали:
SET SERVEROUTPUT ON BEGIN DBMS_OUTPUT.enable; -- Function CHR() -- DBMS_OUTPUT.put_line('1*->'||CHR(37)||' '||CHR(38)||' '||CHR(101)||' '||CHR(105)); -- Function CONCAT() -- DBMS_OUTPUT.put_line('2*->'||CONCAT('Vasiya', 'Pupkin')); -- Function INITCAP() -- DBMS_OUTPUT.put_line('3*->'||INITCAP('iF yoU or mY scoRE and 7 YEARS ago ...')); -- Function LOWER() -- DBMS_OUTPUT.put_line('4*->'||LOWER('iF yoU or mY scoRE and 7 YEARS ago ...')); -- Function LPAD() 1 -- DBMS_OUTPUT.put_line('5*->'||LPAD('Short String', 20, 'XY')); -- Function LPAD() 2 -- DBMS_OUTPUT.put_line('6*->'||LPAD('Short String', 13, 'PD')); -- Function LTRIM() 1 -- DBMS_OUTPUT.put_line('7*->'||LTRIM(' The White House has a many tree!')); -- Function LTRIM() 2 -- DBMS_OUTPUT.put_line('8*->'||LTRIM('xxxxxThe White House has a many tree!', 'x')); -- Function LTRIM() 3 -- DBMS_OUTPUT.put_line('9*->'||LTRIM('xyxyxyxyxyThe White House has a many tree!', 'xy')); -- Function LTRIM() 4 -- DBMS_OUTPUT.put_line('10*->'||LTRIM('xyxyxxxxxyThe White House has a many tree!', 'xy')); -- Function REPLACE() 1 -- DBMS_OUTPUT.put_line('11*->'||REPLACE('This and That', 'Th', 'B')); -- Function REPLACE() 2 -- DBMS_OUTPUT.put_line('12*->'||REPLACE('This and That', 'Th')); -- Function REPLACE() 3 -- DBMS_OUTPUT.put_line('13*->'||REPLACE('This and That', NULL)); END; /
После запуска получаем:
SQL> SET SERVEROUTPUT ON SQL> SQL> BEGIN 2 3 DBMS_OUTPUT.enable; 4 -- Function CHR() -- 5 DBMS_OUTPUT.put_line('1*->'||CHR(37)||' '||CHR(38)||' '||CHR(101)||' '||CHR(105)); 6 7 -- Function CONCAT() -- 8 DBMS_OUTPUT.put_line('2*->'||CONCAT('Vasiya', 'Pupkin')); 9 10 -- Function INITCAP() -- 11 DBMS_OUTPUT.put_line('3*->'||INITCAP('iF yoU or mY scoRE and 7 YEARS ago ...')); 12 13 -- Function LOWER() -- 14 DBMS_OUTPUT.put_line('4*->'||LOWER('iF yoU or mY scoRE and 7 YEARS ago ...')); 15 16 -- Function LPAD() 1 -- 17 DBMS_OUTPUT.put_line('5*->'||LPAD('Short String', 20, 'XY')); 18 19 -- Function LPAD() 2 -- 20 DBMS_OUTPUT.put_line('6*->'||LPAD('Short String', 13, 'PD')); 21 22 -- Function LTRIM() 1 -- 23 DBMS_OUTPUT.put_line('7*->'||LTRIM(' The White House has a many tree!')); 24 25 -- Function LTRIM() 2 -- 26 DBMS_OUTPUT.put_line('8*->'||LTRIM('xxxxxThe White House has a many tree!', 'x')); 27 28 -- Function LTRIM() 3 -- 29 DBMS_OUTPUT.put_line('9*->'||LTRIM('xyxyxyxyxyThe White House has a many tree!', 'xy')); 30 31 -- Function LTRIM() 4 -- 32 DBMS_OUTPUT.put_line('10*->'||LTRIM('xyxyxxxxxyThe White House has a many tree!', 'xy')); 33 34 -- Function REPLACE() 1 -- 35 DBMS_OUTPUT.put_line('11*->'||REPLACE('This and That', 'Th', 'B')); 36 37 -- Function REPLACE() 2 -- 38 DBMS_OUTPUT.put_line('12*->'||REPLACE('This and That', 'Th')); 39 40 -- Function REPLACE() 3 -- 41 DBMS_OUTPUT.put_line('13*->'||REPLACE('This and That', NULL)); 42 43 END; 44 / 1*->% & e i 2*->VasiyaPupkin 3*->If You Or My Score And 7 Years Ago ... 4*->if you or my score and 7 years ago ... 5*->XYXYXYXYShort String 6*->PShort String 7*->The White House has a many tree! 8*->The White House has a many tree! 9*->The White House has a many tree! 10*->The White House has a many tree! 11*->Bis and Bat 12*->is and at 13*->This and That Процедура PL/SQL успешно завершена.
Все это относится к СИМВОЛЬНЫМ ФУНКЦИЯМ, ВОЗВРАЩАЮЩИМ СИМВОЛЬНЫЕ ЗНАЧЕНИЯ.
Далее, продолжим.