{"id":3278,"date":"2020-01-29T21:40:44","date_gmt":"2020-01-29T20:40:44","guid":{"rendered":"http:\/\/van-maanen.com\/?p=3278"},"modified":"2020-01-29T21:40:44","modified_gmt":"2020-01-29T20:40:44","slug":"a-completely-useless-pl-sql-programme","status":"publish","type":"post","link":"http:\/\/archief.van-maanen.com\/?p=3278","title":{"rendered":"A completely useless PL SQL programme"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Once, I wrote a completely useless programme &#8211; see below. I like to retain it as I spent quite some time on it. But it is absolutely useless.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The idea it that we have some kind of a counter that is incremented by 1 if a subsequent record has the same value for a particular field. It  needs to be reset at 1 in case of a new value.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I wrote a nice PL SQL programme to do this. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However Oracle has three functions that would have led to the same result: a lag function, a row_number analytical function and a rank function. So, useless, useless. But it was fun programming.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">declare<br>       cursor c_emp is select * from stagingzone.T9_EMPLOYMENT ;<br>       r_emp c_emp%ROWTYPE;<br>       ff_Person_ID number := 0;<br>       ff_Employment_ID number := 0;<br>       volgno number := 0;<br>       volg number := 0;<br>       stmt varchar(1000);<br>       stmt1 varchar(1000):=&#8221;;<br>       teller number :=0;<br>       hx varchar(35);<br>       hx1 varchar(35);<br>   begin<br>       stmt:= &#8216;drop table stagingzone.EMPLOYMENT_BU&#8217;;   <br>       SELECT COUNT(*) into TELLER FROM all_tables WHERE table_name = UPPER(&#8216;EMPLOYMENT_BU&#8217;) and owner = UPPER(&#8216;STAGINGZONE&#8217;);<br>       IF (teller>0) THEN <br>       dbms_output.put_line(stmt);<br>       execute immediate stmt;<br>       END IF;<br>       stmt:= &#8216;create table stagingzone.EMPLOYMENT_BU as select * FROM stagingzone.T9_EMPLOYMENT where 1=0&#8217;;<br>       dbms_output.put_line(stmt);<br>       execute immediate stmt;<br>       teller:=0;<br>       open c_emp;<br>       loop<br>           fetch c_emp into r_emp;<br>           teller := teller + 1;<br>           exit when c_emp%NOTFOUND ;<br>           hx:=q'[to_date(&#8216;]&#8217;||to_char(r_emp.START_DATE_EMPLOYMENT,&#8217;DDMMYYYY&#8217;)||q'[&#8216;,&#8217;DDMMYYYY&#8217;)]&#8217;;<br>           hx1:=q'[to_date(&#8216;]&#8217;||to_char(r_emp.END_DATE_EMPLOYMENT,&#8217;DDMMYYYY&#8217;)||q'[&#8216;,&#8217;DDMMYYYY&#8217;)]&#8217;;<br>           if  (r_emp.PERSON_ID=ff_Person_ID)<br>           then volgno := volgno + 1;<br>           else volgno :=1;<br>           end if;<br>           if  (r_emp.PERSON_ID=ff_Person_ID and r_emp.EMPLOYMENT_ID =ff_Employment_ID)<br>           then volg := volg + 1;<br>           else volg :=1;<br>           end if;<br>           r_emp.SEQUENCE_NUMBER_EMPLOYMENT := volg;  <br>           r_emp.SEQUENCE_NUMBER :=volgno;<br>           ff_Person_ID:=r_emp.PERSON_ID;<br>           ff_Employment_ID:=r_emp.EMPLOYMENT_ID;<br>           stmt1 := q'[INSERT INTO stagingzone.EMPLOYMENT_BU(PERSON_ID,START_DATE_EMPLOYMENT ,END_DATE_EMPLOYMENT ,SEQUENCE_NUMBER_EMPLOYMENT, SEQUENCE_NUMBER, EMPLOYER_ID, EMPLOYMENT_ID) values(]&#8217;||<br>                    r_emp.PERSON_ID||&#8217;,&#8217;||hx||&#8217;,&#8217;||hx1||&#8217;,&#8217;||r_emp.SEQUENCE_NUMBER_EMPLOYMENT||&#8217;,&#8217;||r_emp.SEQUENCE_NUMBER ||&#8217;,&#8217;||r_emp.EMPLOYER_ID ||&#8217;,&#8217;||r_emp.EMPLOYMENT_ID ||&#8217;)&#8217;;<br>  &#8212;         if mod(teller,100) = 0 then dbms_output.put_line(stmt1);end if;<br>           execute immediate stmt1;<br>       end loop;<br>       close c_emp;<br>       EXCEPTION<br>         WHEN OTHERS THEN<br>           dbms_output.put_line(&#8216;Oops foutje&#8217;);  <br>           dbms_output.put_line(&#8216;SQL Code &#8216;||SQLCODE);  <br>           dbms_output.put_line(&#8216;Message  &#8216;||SQLERRM);  <br>   end;<br>   \/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Once, I wrote a completely useless programme &#8211; see below. I like to retain it as I spent quite some time on it. But it is absolutely useless. The idea it that we have some kind of a counter that is incremented by 1 if a subsequent record has the same value for a particular [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-3278","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"_links":{"self":[{"href":"http:\/\/archief.van-maanen.com\/index.php?rest_route=\/wp\/v2\/posts\/3278","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/archief.van-maanen.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/archief.van-maanen.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/archief.van-maanen.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/archief.van-maanen.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3278"}],"version-history":[{"count":0,"href":"http:\/\/archief.van-maanen.com\/index.php?rest_route=\/wp\/v2\/posts\/3278\/revisions"}],"wp:attachment":[{"href":"http:\/\/archief.van-maanen.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3278"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/archief.van-maanen.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3278"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/archief.van-maanen.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3278"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}