MySQL Function Kullanımı
Merhabalar,
Fonksiyonlar Bir veya birden fazla parametre alır işler ve değer döndürür.
Kullanım alanına kendi uygulamamdan basit bir örnek ile başlayalım,
uygulamam içerisinde, listemde dualar var ve dualar okudukça insanlar beğenme butonuna tıklıyor, databasede yer kaplamamak ve karışıklığı önlemek adına, tablomda beğenen kullanıcıların, kullanıcı adı değil kullanıcı idlerini tutarım.
Aşağıdaki gibi,
Ama uygulama içerisinde, örneğin 1 nolu duamı beğenenlerin listesini çektiğimde anlamsız user_idler dönecek ve eğer fonksiyon kullanmaz isem, uygulama içerisinde tek tek her id’nin kullanıcı adını user tabloma delphi ile bağlanıp almam gerekecek,
Çok ürkütücü …
Neyse ki tamda bu durumda imdadımıza fonksiyon yetişiyor.
Söz dizimimiz aşağıdaki gibidir.
CREATE FUNCTION `idtousername`(id_no INTEGER(11))
RETURNS varchar(50) CHARSET latin1
BEGIN
DECLARE UNAME VARCHAR(20);
select username INTO UNAME from user where id=id_no;
RETURN UNAME;
END;
Kısaca anlatayım,
CREATE FUNCTION `idtousername`(id_no INTEGER(11))
RETURNS varchar(50) CHARSET latin1
idtousername adında bir fonksiyon oluşturduk, alacağı parametre adı id_no ve integer değer alacak, geri dönüşü ise varchar(50) kısaca string olacaktır.
BEGIN // fonsiyonumuz başlıyor DECLARE UNAME VARCHAR(50); // UNAME isminde bir string değişken oluşturdum. select username INTO UNAME from user where id=id_no; // user tabloma gittim ve fonksiyonuma gelen id_no ya ait userimin username'ini aldım UNAME değişkenime atadım. RETURN UNAME; ve UNAME değişkenimi fonksiyonumda geri döndürdüm. END; //fonksiyonum sona erdi,
Kullanımı ve sonuç ise bu şekilde…
SELECT duaid,idtousername(user_id) as username FROM like_dua
MySQL function kullanımından olabildiğince basit ve anlaşılır bir biçimde anlatmaya çalıştım umarım anlaşılır olmuştur. Projelerinizde database kullanmanız gerektiğinde bence functionlara ve procedurelere mutlaka ihtiyacınız olacaktır. Önem arz etmektedir.
Tabi bunun yerine viewlerde kullanılabilirdi ama şimdi konumuz fonsiyon onlara da ileri de değinirim inşallah.
Kalın sağlıcakla…
Eline sağlık. Ancak bir sorum olacaktı.
fonksiyona varchar değişken gönderip sutunu belirlediğimizde mutlaka değişken adını sutun adı olarak işliyor. Bu sorunu nasıl giderebilirim acaba, bir fikrin var mı?
AS komutu kullanmayı deneyebilirsin.
Aynı örnekte aynı fonksiyon ile username ya da id değerini almak istesek;
CREATE FUNCTION
idtousername
(id_no INTEGER(11), sutun VARCHAR(20))ve
select sutun INTO UNAME from user where id=id_no;
yeterli olacak gibi. Ancak değişkenle gelen değeri değil değişkene verdiğimiz ismi çalıştırıyor.
Umarım anlatabilmişimdir.