﻿
{"id":176,"date":"2012-03-13T21:14:31","date_gmt":"2012-03-13T21:14:31","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=176"},"modified":"2012-04-27T16:49:36","modified_gmt":"2012-04-27T16:49:36","slug":"transact-sqlfunctions-scalar-function-inline-function","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/transact-sqlfunctions-scalar-function-inline-function\/","title":{"rendered":"Transact Sql(Functions-Scalar Function-Inline Function)"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Bu yaz\u0131mda T-SQL de fonksiyonlardan bahsedece\u011fim.T-SQL de iki tip fonksiyon vard\u0131r.Bunlardan biri geriye istedi\u011fimiz bir tipde de\u011fer g\u00f6nderen Scalar fonksiyonlar,di\u011feri ise geriye tablo g\u00f6nderen inline fonksiyonlard\u0131r.<br \/>\n<!--more--> <span style=\"color: #ff0000;\"><strong>FUNCTIONS (FONKS\u0130YONLAR) (GER\u0130YE DE\u011eER G\u00d6NDEREN METOD)<\/strong><\/span><br \/>\n<strong><span style=\"color: #339966;\">1.SCALAR FUNCTION :<\/span><\/strong><\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ncreate function topla(@sayi1 int,@sayi2 int) returns int\r\nas\r\nbegin\r\nreturn @sayi1+@sayi2\r\nend\r\n<\/pre>\n<hr \/>\n<p>topla : Fonksiyonun ad\u0131.<br \/>\n(@sayi1 int,@sayi2 int) : Fonksiyonun de\u011ferlerini d\u0131\u015far\u0131dan alaca\u011f\u0131 parametreleri ve tipleri.<br \/>\nreturns int : Geriye d\u00f6necek de\u011ferin tipini belirliyoruz.<br \/>\nreturn @sayi1+@sayi2 : Geriye d\u00f6nd\u00fcr\u00fclen de\u011fer.<br \/>\nDatabase in Programmability klas\u00f6r\u00fcnden Functions ve oradan Scalar valued functionsadan bu fonk. g\u00f6r\u00fclebilir. Fonk. a sa\u011f t\u0131klan\u0131p modify ile kodlar\u0131na eri\u015filebilir.<br \/>\nE\u011fer fonksiyonun kodlar\u0131na eri\u015filmesin istiyorsak \u201cwith encryption\u201d kullan\u0131l\u0131r.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ncreate function topla2(@sayi1 int,@sayi2 int) returns int\r\nwith encryption\r\nas\r\nbegin\r\nreturn @sayi1+@sayi2\r\nend\r\n<\/pre>\n<hr \/>\n<p>\u015eimdide gelin \u201ctopla2\u201d ad\u0131ndaki fonksiyonumuzu kullanal\u0131m.<br \/>\nselect topla2(4,5) \u2013 Bu \u015fekilde kullan\u0131m yaparsak \u00e7al\u0131\u015fmayacakt\u0131r.\u00c7\u00fcnk\u00fc fonksiyonun \u015femas\u0131n\u0131 yazmam\u0131z gerekiyor.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nselect dbo.topla2(3,4) \u2013 Bu \u015fekilde \u201c7\u201d sonucunu geri d\u00f6nd\u00fcrecektir.\r\n<\/pre>\n<hr \/>\n<p>\u015eimdi bir \u00f6rnek \u00e7\u00f6zelim.<br \/>\n\u201cNorthwind\u201d tablosunda \u00e7al\u0131\u015fal\u0131m.<br \/>\nHer bir \u00fcr\u00fcn\u00fcm\u00fcn %18 KDV dahil olmak \u00fczere toplam maliyetini getiren fonk. yaz\u0131n\u0131z.<br \/>\n1.Fonksiyonu yazal\u0131m.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ngo\r\ncreate function maliyet(@BirimFiyati int,@StokMiktari int) returns nvarchar(50)\r\nas\r\nbegin\r\ndeclare @sonuc int\r\nset @sonuc = @BirimFiyati * @StokMiktari * 1.18\r\nreturn @sonuc\r\nend\r\n<\/pre>\n<hr \/>\n<p>2.Kullanal\u0131m.<br \/>\nTabi kullan\u0131rken \u015funuda g\u00f6stereyim yazd\u0131\u011f\u0131m\u0131z fonksiyona a\u015fa\u011f\u0131daki gibi elimle de\u011fer g\u00f6nderebiliyorum.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nselect dbo.maliyet(10,10)\r\n<\/pre>\n<hr \/>\n<p>2. olarak tablodaki kolonlardan verileri al\u0131p fonksiyonda i\u015fletebiliyorum.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nselect\r\nUrunAdi,\r\nBirimFiyati,\r\nHedefStokDuzeyi,\r\ndbo.maliyet(BirimFiyati,HedefStokDuzeyi)\r\nfrom Urunler\r\n<\/pre>\n<hr \/>\n<p>Herhangi bir kolonda fonksiyon kullan\u0131larak,otomatik hesaplanabilir kolonlar(Computed Column) olu\u015fturmak m\u00fcmk\u00fcnd\u00fcr.<br \/>\n\u00c7\u0131kt\u0131 olarak &#8230;&#8230;&#8230;&#8230; kategorisindeki &#8230;&#8230;&#8230;.. \u00fcr\u00fcn\u00fcn\u00fcn toplam fiyat\u0131 : &#8230;&#8230;&#8230;&#8230; &#8216; d\u0131r. \u015feklinde bir \u00e7\u0131kt\u0131 veren fonksiyonu yaz\u0131n\u0131z. Bu fonksiyon parametre olarak KategoriAdi,UrunAdi,BirimFiyati ve HedefStokDuzeyi alacak<br \/>\n1.Fonksiyonu yazal\u0131m.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ngo\r\nalter function cikti(@kategori varchar(50),@urunadi varchar(50),@birimfiyat int,@stok int) returns varchar(MAX)\r\nas\r\nbegin\r\ndeclare @cikti varchar(100)\r\nset @cikti = @kategori + ' kategorisindeki ' + @urunadi + ' \u00fcr\u00fcn\u00fcn\u00fcn toplam fiyat\u00fd : ' + CAST(@birimfiyat*@stok as varchar(100)) + ' d\u00fdr.'\r\nreturn @cikti\r\nend\r\n<\/pre>\n<hr \/>\n<p>2.Kullanal\u0131m.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nselect\r\ndbo.cikti(k.KategoriAdi,u.UrunAdi,u.BirimFiyati,u.HedefStokDuzeyi)\r\nfrom Urunler as u inner join Kategoriler as k on u.KategoriID=k.KategoriID\r\n<\/pre>\n<hr \/>\n<p>Fonksiyon i\u00e7inde normal sorguda yazabiliriz.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nselect CHAR(91) \u2013 Char() ile say\u0131sal de\u011ferlerin karakter kar\u015f\u0131l\u0131\u011f\u0131n\u0131 elde ederiz.\r\nselect ASCII('a') \u2013 Ascii() ile de verilen karakterin ASCII kodu elde edilir.\r\n<\/pre>\n<hr \/>\n<p><span style=\"color: #339966;\"><strong>2.INLINE FUNCTIONS :<\/strong><\/span><br \/>\nGeriye bir de\u011fer de\u011fil,tablo g\u00f6nderen fonksiyonlard\u0131r.Geriye tablo g\u00f6nderece\u011fi i\u00e7in bu fonksiyonlar \u00e7al\u0131\u015ft\u0131r\u0131l\u0131rken sanki bir tablodan sorgu \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r gibi \u00e7al\u0131\u015ft\u0131r\u0131l\u0131rlar.Bu y\u00f6nleriyle viewlere benzerler.View ile yap\u0131lan i\u015flevler inline functions larlada yap\u0131labilir.Genellikle bu tarz i\u015flemler i\u00e7in view kullanman\u0131z\u0131 \u00f6neririm.<br \/>\nInline functions olu\u015fturulurken begin end kullan\u0131lmaz.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ngo\r\ncreate function fc_Gonder(@ad varchar(20),@soyad varchar(20)) returns table\r\nas\r\nreturn select Adi,SoyAdi from Personeller where Adi=@ad and SoyAdi=@soyad\r\n<\/pre>\n<hr \/>\n<p>Kullan\u0131m\u0131<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nselect * from dbo.fc_Gonder('Nancy','Davolio')\r\nselect Adi from dbo.fc_Gonder('Nancy','Davolio')\r\n<\/pre>\n<hr \/>\n<p>NOT:With de viewlere benzer bir yap\u0131 sunarlar.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nwith denemeasddsa(ad)\r\nas\r\n(\r\nselect Adi from Personeller\r\n)\r\nselect * from denemeasddsa\r\n<\/pre>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Bu yaz\u0131mda T-SQL de fonksiyonlardan bahsedece\u011fim.T-SQL de iki tip fonksiyon vard\u0131r.Bunlardan biri geriye istedi\u011fimiz bir tipde de\u011fer g\u00f6nderen Scalar fonksiyonlar,di\u011feri ise geriye tablo g\u00f6nderen inline fonksiyonlard\u0131r.<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22],"tags":[121,122,123],"class_list":["post-176","post","type-post","status-publish","format-standard","hentry","category-veritabani","tag-function","tag-inline","tag-scalar"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/176","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=176"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/176\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=176"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=176"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=176"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}