PostgreSQL - İşlevler

PostgreSQL functionsDepolanan Prosedürler olarak da bilinen, normalde birkaç sorgu ve gidiş-dönüş gerektiren işlemleri veritabanında tek bir işlevde gerçekleştirmenize olanak tanır. Diğer uygulamalar, orta katman veya yinelenen kod yerine doğrudan depolanmış yordamlarınızla etkileşime girebildiğinden, işlevler veritabanının yeniden kullanımına izin verir.

İşlevler, SQL, PL / pgSQL, C, Python vb. Gibi seçtiğiniz bir dilde oluşturulabilir.

Sözdizimi

Bir işlev oluşturmak için temel sözdizimi aşağıdaki gibidir -

CREATE [OR REPLACE] FUNCTION function_name (arguments) 
RETURNS return_datatype AS $variable_name$
   DECLARE
      declaration;
      [...]
   BEGIN
      < function_body >
      [...]
      RETURN { variable_name | value }
   END; LANGUAGE plpgsql;

Nerede,

  • function-name işlevin adını belirtir.

  • [VEYA DEĞİŞTİR] seçeneği, mevcut bir işlevi değiştirmeye izin verir.

  • İşlev, bir return Beyan.

  • RETURNcümleci tümce, işlevden döneceğiniz veri türünü belirtir. return_datatype temel, bileşik veya etki alanı türü olabilir veya bir tablo sütununun türüne başvurabilir.

  • function-body çalıştırılabilir kısmı içerir.

  • AS anahtar sözcüğü, bağımsız bir işlev oluşturmak için kullanılır.

  • plpgsqlişlevin uygulandığı dilin adıdır. Burada, PostgreSQL için bu seçeneği kullanıyoruz, bu seçenek SQL, C, dahili olabilir veya kullanıcı tanımlı bir yordamsal dilin adı olabilir. Geriye dönük uyumluluk için, isim tek tırnak içine alınabilir.

Misal

Aşağıdaki örnek, bağımsız bir işlev oluşturmayı ve çağırmayı gösterir. Bu fonksiyon, COMPANY tablosundaki toplam kayıt sayısını döndürür. Aşağıdaki kayıtları içeren ŞİRKET tablosunu kullanacağız -

testdb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

Fonksiyon totalRecords () aşağıdaki gibidir -

CREATE OR REPLACE FUNCTION totalRecords ()
RETURNS integer AS $total$
declare
	total integer;
BEGIN
   SELECT count(*) into total FROM COMPANY;
   RETURN total;
END;
$total$ LANGUAGE plpgsql;

Yukarıdaki sorgu yürütüldüğünde sonuç şu olur -

testdb# CREATE FUNCTION

Şimdi bu işleve bir çağrı yapalım ve COMPANY tablosundaki kayıtları kontrol edelim.

testdb=# select totalRecords();

Yukarıdaki sorgu yürütüldüğünde sonuç şu olur -

totalrecords
--------------
      7
(1 row)