{"id":9426,"date":"2019-05-24T13:59:32","date_gmt":"2019-05-24T13:59:32","guid":{"rendered":"https:\/\/ittutorial.org\/?p=9426"},"modified":"2019-07-30T11:10:33","modified_gmt":"2019-07-30T11:10:33","slug":"pl-sql-programlama-9","status":"publish","type":"post","link":"https:\/\/ittutorial.org\/pl-sql-programlama-9\/","title":{"rendered":"PL\/SQL Programlama &#8211; 9"},"content":{"rendered":"<p>Merhaba, PL\/SQL yaz\u0131lar\u0131na devam ediyoruz. Bu yaz\u0131da <strong>Prosed\u00fcr <\/strong>&#8216;lere ba\u015fl\u0131yoruz.<\/p>\n<h3>PROSED\u00dcRLER:<\/h3>\n<ul>\n<li>Prosed\u00fcrler bir veritaban\u0131 objesidir.<\/li>\n<li>Yapaca\u011f\u0131 i\u015fleme dair yazd\u0131\u011f\u0131m\u0131z kodu bir defa derlenip veritaban\u0131na kay\u0131t edildikten sonra kod i\u00e7erisinde \u00e7a\u011f\u0131r\u0131\u015f\u0131\u011f kullan\u0131l\u0131r.<\/li>\n<li>\u00d6zetle yap\u0131lacak bir i\u015flem i\u00e7in s\u00fcrekli ayn\u0131 kod yaz\u0131lmam\u0131\u015f olur.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h4>Prosed\u00fcr Olu\u015fturma:<\/h4>\n<p>Olu\u015fturaca\u011f\u0131m\u0131z Prosed\u00fcr\u00fc <strong><em>&#8220;CREATE&#8221;<\/em><\/strong> komutu ile olu\u015fturabiliriz. Silerken de benzer \u015fekilde <strong><em>&#8220;DROP&#8221;<\/em><\/strong> komutu ile silebiliriz. \u00d6rnek \u00fczerinden ilerleyeyim.<\/p>\n<p>&nbsp;<\/p>\n<pre>CREATE [OR REPLACE] PROCEDURE test AS\r\n\r\nBEGIN\r\n\r\ndbms_output.put_line('Prosed\u00fcr ba\u015far\u0131l\u0131');\r\n\r\nEND;\r\n\r\n\/<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9427\" src=\"https:\/\/ittutorial.org\/wp-content\/uploads\/2019\/05\/Screenshot_34-1-300x123.png\" alt=\"\" width=\"639\" height=\"262\" srcset=\"https:\/\/ittutorial.org\/wp-content\/uploads\/2019\/05\/Screenshot_34-1-300x123.png 300w, https:\/\/ittutorial.org\/wp-content\/uploads\/2019\/05\/Screenshot_34-1.png 430w\" sizes=\"auto, (max-width: 639px) 100vw, 639px\" \/><\/p>\n<p>Olu\u015fturdu\u011fumuz bir prosed\u00fcr\u00fc \u00e7al\u0131\u015ft\u0131rmak i\u00e7in EXEC veya EXECUTE komutlar\u0131n\u0131 kullanmal\u0131y\u0131z. E\u011fer prosed\u00fcr\u00fcm\u00fcz parametrelerden olu\u015fuyorsa, \u00e7al\u0131\u015ft\u0131r\u0131rken bu parametreleri de belirtmek zorunday\u0131z.<\/p>\n<p>EXEC @parametre_adi(parametre1,&#8230;.);<\/p>\n<h4>PARAMETRE KULLANIMI:<\/h4>\n<p>Az \u00f6ncek \u00f6rnekte parametre kullan\u0131m\u0131na k\u00fc\u00e7\u00fck bir giri\u015f yapt\u0131k diyebiliriz. Bunun yan\u0131s\u0131ra parametrelerinde kullan\u0131m modlar\u0131 vard\u0131r bunlar; <strong>IN\/OUT\/IN OUT<\/strong><\/p>\n<h6>IN Modu:<\/h6>\n<ul>\n<li>Default olarak kullan\u0131lan moddur<\/li>\n<li>Prosed\u00fcr i\u00e7inde yer alan tan\u0131ml\u0131 de\u011ferleri kabul eder<\/li>\n<li>Bize de\u011fer d\u00f6nd\u00fcr\u00fcr.<\/li>\n<\/ul>\n<p>Bir \u00f6rnek \u00fczerinen daha net anlayabiliriz. <strong>Calisanlar<\/strong> tablosunda bir kayd\u0131m\u0131za de\u011fer vererek de\u011fi\u015ftirelim.<\/p>\n<p>\u00d6nce tablonun ilk haline bakal\u0131m.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9429\" src=\"https:\/\/ittutorial.org\/wp-content\/uploads\/2019\/05\/Screenshot_36-1-300x67.png\" alt=\"\" width=\"465\" height=\"104\" srcset=\"https:\/\/ittutorial.org\/wp-content\/uploads\/2019\/05\/Screenshot_36-1-300x67.png 300w, https:\/\/ittutorial.org\/wp-content\/uploads\/2019\/05\/Screenshot_36-1.png 383w\" sizes=\"auto, (max-width: 465px) 100vw, 465px\" \/><\/p>\n<pre>create or replace procedure SYS.calisan_guncelle(cal_id in number,cal_adi in varchar2) as \r\nBEGIN\r\nUPDATE Calisanlar set AD=cal_adi where ID=cal_id;\r\ncommit;\r\nEND;\r\n\/<\/pre>\n<p>&nbsp;<\/p>\n<p>Prosed\u00fcr\u00fc \u00e7al\u0131\u015ft\u0131ral\u0131m.<\/p>\n<p>EXEC calisan_update(100,&#8217;Onur&#8217;);<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9430\" src=\"https:\/\/ittutorial.org\/wp-content\/uploads\/2019\/05\/Screenshot_37-1-300x92.png\" alt=\"\" width=\"701\" height=\"215\" srcset=\"https:\/\/ittutorial.org\/wp-content\/uploads\/2019\/05\/Screenshot_37-1-300x92.png 300w, https:\/\/ittutorial.org\/wp-content\/uploads\/2019\/05\/Screenshot_37-1.png 346w\" sizes=\"auto, (max-width: 701px) 100vw, 701px\" \/><\/p>\n<h6>OUT Modu:<\/h6>\n<p>Prosed\u00fcr i\u00e7erisinde yer alan parametrelerin kullan\u0131m\u0131 sonucu bize belirledi\u011fimiz de\u011fi\u015fken \u00fczerinden de\u011fer d\u00f6nd\u00fcren moddur. Prosed\u00fcr\u00fc olu\u015ftururken OUT tipinde bir parametre ile de\u011fi\u015febilir de\u011fer almam\u0131z\u0131 sa\u011flar.<\/p>\n<p>\u00d6rnek \u00fczerinden inceleyelim.<\/p>\n<p>Calisanlar tablosunda verdi\u011fimiz de\u011ferlerde ve OUT parametresi kullanarak maa\u015f g\u00fcncellemesi yapal\u0131m.<\/p>\n<p>Tablonun ilk haline bakal\u0131m<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9431\" src=\"https:\/\/ittutorial.org\/wp-content\/uploads\/2019\/05\/Screenshot_38-1-300x41.png\" alt=\"\" width=\"607\" height=\"83\" srcset=\"https:\/\/ittutorial.org\/wp-content\/uploads\/2019\/05\/Screenshot_38-1-300x41.png 300w, https:\/\/ittutorial.org\/wp-content\/uploads\/2019\/05\/Screenshot_38-1.png 440w\" sizes=\"auto, (max-width: 607px) 100vw, 607px\" \/><\/p>\n<pre>DECLARE\r\ncalisan_soyad VARCHAR2(20);\r\ncalisan_no NUMBER(3):=100;\r\nartis NUMBER(6):=200;\r\nPROCEDURE maas_artis(calisan_id IN NUMBER,miktar IN NUMBER,calisan_ad OUT VARCHAR2)\r\nIS\r\nBEGIN\r\nUPDATE Calisanlar SET maas=maas+miktar where ID=calisan_id;\r\nSELECT SOYAD into calisan_ad from Calisanlar where ID=calisan_id;\r\nEND maas_artis;\r\nBEGIN\r\nmaas_artis(calisan_no,artis,calisan_soyad);\r\nDBMS_OUTPUT.PUT_LINE(calisan_soyad ||' \u0130\u00e7in maa\u015f art\u0131\u015f\u0131 ger\u00e7ekle\u015fti');\r\nEND;\r\n\/<\/pre>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9432\" src=\"https:\/\/ittutorial.org\/wp-content\/uploads\/2019\/05\/Screenshot_39-300x133.png\" alt=\"\" width=\"620\" height=\"275\" srcset=\"https:\/\/ittutorial.org\/wp-content\/uploads\/2019\/05\/Screenshot_39-300x133.png 300w, https:\/\/ittutorial.org\/wp-content\/uploads\/2019\/05\/Screenshot_39.png 737w\" sizes=\"auto, (max-width: 620px) 100vw, 620px\" \/><\/p>\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc gibi Prosed\u00fcr ba\u015far\u0131l\u0131 \u015fekilde \u00e7al\u0131\u015fm\u0131\u015f g\u00f6z\u00fck\u00fcyor, Peki maa\u015f neden 200 artamas\u0131 gerekirken 400 artt\u0131 diyeceksiniz. Ben kontrol etmek i\u00e7in yukar\u0131da bir kere daha kodu \u00e7a\u0131\u015ft\u0131rd\u0131m bu y\u00fczden toplamda iki kere \u00e7al\u0131\u015fm\u0131\u015f oldu yani bir hata yok \ud83d\ude42<\/p>\n<h6>IN OUT Modu:<\/h6>\n<p>\u00c7al\u0131\u015ft\u0131ktan sonra kod i\u00e7erisinde bir de\u011fer d\u00f6nd\u00fcr\u00fcr. Parametrenin ald\u0131\u011f\u0131 de\u011fer kullan\u0131lmay\u0131p ba\u015fka de\u011fer ile i\u015flem yap\u0131labilir.<\/p>\n<p>\u00d6rnek ile inceleyelim. G\u00fcn i\u00e7inde ge\u00e7en dakika say\u0131s\u0131n\u0131 bulal\u0131m.<\/p>\n<pre>create or replace procedure dk_hesap(tarih DATE,saat IN OUT NUMBER,dk IN OUT NUMBER)\r\nIS\r\nBEGIN\r\nDBMS_OUTPUT.PUT_LINE(saat||' \/ '||dk);\r\nsaat:=to_NUMBER(to_char(tarih,'hh24'));\r\ndk:=to_char(tarih,'mi');\r\nDBMS_OUTPUT.PUT_LINE(saat||' : '||dk);\r\nEND;\r\n\/\r\n\r\n\r\nDECLARE \r\nv_saat NUMBER:=12;\r\nv_dakika NUMBER:=60;\r\nBEGIN\r\ndk_hesap(sysdate,v_saat,v_dakika);\r\nDBMS_OUTPUT.PUT_LINE('Toplam Dakika '|| (v_saat*60+v_dakika));\r\nEND;\r\n\/<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-9441\" src=\"https:\/\/ittutorial.org\/wp-content\/uploads\/2019\/05\/Screenshot_40-300x138.png\" alt=\"\" width=\"670\" height=\"308\" srcset=\"https:\/\/ittutorial.org\/wp-content\/uploads\/2019\/05\/Screenshot_40-300x138.png 300w, https:\/\/ittutorial.org\/wp-content\/uploads\/2019\/05\/Screenshot_40.png 758w\" sizes=\"auto, (max-width: 670px) 100vw, 670px\" \/><\/p>\n<p>Bu yaz\u0131n\u0131n sonuna geldik, bir sonraki yaz\u0131da prosed\u00fcrlerde kalan k\u0131sa konumuzu da i\u015fleyip fonksiyonlara ba\u015fl\u0131yor olaca\u011f\u0131z.<\/p>\n<p>G\u00f6r\u00fc\u015fmek \u00fczere..<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Merhaba, PL\/SQL yaz\u0131lar\u0131na devam ediyoruz. Bu yaz\u0131da Prosed\u00fcr &#8216;lere ba\u015fl\u0131yoruz. PROSED\u00dcRLER: Prosed\u00fcrler bir veritaban\u0131 objesidir. Yapaca\u011f\u0131 i\u015fleme dair yazd\u0131\u011f\u0131m\u0131z kodu bir defa derlenip veritaban\u0131na kay\u0131t edildikten sonra kod i\u00e7erisinde \u00e7a\u011f\u0131r\u0131\u015f\u0131\u011f kullan\u0131l\u0131r. \u00d6zetle yap\u0131lacak bir i\u015flem i\u00e7in s\u00fcrekli ayn\u0131 kod yaz\u0131lmam\u0131\u015f olur. &nbsp; Prosed\u00fcr Olu\u015fturma: Olu\u015fturaca\u011f\u0131m\u0131z Prosed\u00fcr\u00fc &#8220;CREATE&#8221; komutu ile olu\u015fturabiliriz. Silerken de benzer \u015fekilde &#8220;DROP&#8221; &hellip;<\/p>\n","protected":false},"author":67,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[5631],"tags":[3930,3664,3928,3931,3630,3658,3923,3632,3929,3927,3932,3925,3709,3926,3720,3718,3921,3922,3924,3710,3933,1572,3719],"class_list":["post-9426","post","type-post","status-publish","format-standard","","category-pl-sql-turkce","tag-basit-plsql","tag-bastan-sona-pl-sql","tag-pl-sql-case-when","tag-pl-sql-degiskenler","tag-pl-sql-dersleri","tag-pl-sql-document","tag-pl-sql-lesson","tag-pl-sql-nedir","tag-plsql-baslangic-dersleri","tag-plsql-case-yapisi","tag-plsql-degisken-atama","tag-plsql-donguler","tag-plsql-fonksiyonlar","tag-plsql-if-else","tag-plsql-kitaplari","tag-plsql-kurallari","tag-plsql-learning","tag-plsql-lessons","tag-plsql-ogrenmek","tag-plsql-prosedur","tag-set-serveroputput-on","tag-sql","tag-sql-ve-plsql"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/ittutorial.org\/wp-json\/wp\/v2\/posts\/9426","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ittutorial.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ittutorial.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ittutorial.org\/wp-json\/wp\/v2\/users\/67"}],"replies":[{"embeddable":true,"href":"https:\/\/ittutorial.org\/wp-json\/wp\/v2\/comments?post=9426"}],"version-history":[{"count":2,"href":"https:\/\/ittutorial.org\/wp-json\/wp\/v2\/posts\/9426\/revisions"}],"predecessor-version":[{"id":9442,"href":"https:\/\/ittutorial.org\/wp-json\/wp\/v2\/posts\/9426\/revisions\/9442"}],"wp:attachment":[{"href":"https:\/\/ittutorial.org\/wp-json\/wp\/v2\/media?parent=9426"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ittutorial.org\/wp-json\/wp\/v2\/categories?post=9426"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ittutorial.org\/wp-json\/wp\/v2\/tags?post=9426"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}