PostgreSQL Fonksiyon, Prosedür, View ve Common Table Expression Tanımlamak

PostgreSQL Postgres SQL Veritabanı Database Linux Temel İlişkisel Veritabanı Fonksiyon Prosedür View Common Table Expression CTE Veritabanı İşlemleri

PostgreSQL veritabanında fonksiyon, prosedür, view ve common table expression tanımlama işlemleri terminal ile kolayca yapılabilir. Terminal ekranından postgres veritabanına bağlandıktan sonra;

Fonksiyon Tanımlamak

PostgreSQL örnek fonksiyon tanımlaması, parametre almayan ve int değer döndüren fonksiyon;

Kod

create function getPersonCount()
returns int
language plpgsql
as
$func$
    declare personCount integer;
begin
    select count(id) into personCount from person;

    return personCount;
end;
$func$;

PostgreSQL örnek fonksiyon tanımlaması, parametre alan ve varchar değer döndüren fonksiyon;

Kod

create function "getPersonNameByID"(personID int)
returns varchar
language plpgsql
as
$func$
    declare fullName varchar(100);
begin
    select concat(firstName, ' ', lastname) into fullName from person where id = personID;

    return fullName;
end;
$func$;

Parametre almayan ve tüm tabloyu döndüren fonksiyon;

Kod

create function getAllPerson()
returns setof person
as
$func$
    select * from person
$func$
language sql;

Parametre alan ve tüm tabloyu döndüren fonksiyon;

Kod

create function getPersonsNameStartsWith(search varchar)
returns setof person
language plpgsql
as
$func$
begin    
    return query
        select * from person where firstname like concat(search, '%');
end;
$func$;

Parametre alan ve istenen tablo kolonlarını döndüren fonksiyon;

Kod

create function getPersonFullNamesStartsWith(search varchar)
returns table (first_name varchar, last_name varchar)
language plpgsql
as
$func$
begin    
    return query
        select firstname, lastname from person where firstname like concat(search, '%');
end;
$func$;

Tanımlı Fonksiyonları Listelemek

Tanımlanmış fonksiyonları görmek için;

Kod

\df

Fonksiyonları Çağırmak

Tanımlanmış fonksiyonları çalıştırmak için;

Kod

select getPersonCount();

select "getPersonNameByID"(1002);

select getAllPerson();

select getPersonsNameStartsWith('Y');

select getPersonFullNamesStartsWith('Y');

Fonksiyon Detayını Görmek

Var olan fonksiyon içeriğini görmek için;

Kod

\df+ "getPersonNameByID";

\df+ getPersonCount;

Fonksiyonu Güncellemek

Var olan fonksiyon içeriğini güncellemek için;

Kod

create or replace function "getPersonNameByID"(personID int)
returns varchar
language plpgsql
as
$func$
declare fullName varchar(100);
begin
select concat(firstName, ' ', lastName) into fullName from person where id = personID;

return fullName;
end;
$func$;

Fonksiyonu Silmek

Fonksiyonu silmek için;

Kod

drop function "getPersonNameByID";

drop function getPersonCount;

Prosedür Tanımlamak

Prosedür tanımlamak için;

Kod

create procedure insertPerson(firstname varchar, lastname varchar, email varchar, birthdate date)
language plpgsql
as
$proc$
begin
    insert into person (firstname, lastname, email, birthdate) values (firstname, lastname, email, birthdate);
end
$proc$;

Prosedür Listelemek

Tanımlı prosedürleri görmek için;

Kod

\df

Prosedür Çağırmak

Tanımlı prosedürleri çalıştırmak için;

Kod

call insertperson('Altan', 'Tekisim', 'altantekisim@coolmail.net', '1981-12-12');

Prosedür Detayını Görmek

Tanımlı prosedürün detayını görmek için;

Kod

\df+ "insertperson";

Prosedürü Güncellemek

Prosedürü güncellemek için;

Kod

create or replace procedure insertPerson(firstname varchar, lastname varchar, email varchar, birthdate date)
language plpgsql
as
$proc$
begin
    insert into person (firstname, lastname, email, birthdate) values (firstname, lastname, email, birthdate);
end
$proc$;

Prosedür Silmek

Tanımlı prosedürü silmek için;

Kod

drop procedure "insertperson";

View Tanımlamak

View tanımlamak için;

Kod

create view last10Person as
    select firstname, lastname from person order by id desc limit 10;

View Listesini Görmek

Tanımlı view listesini görmek için;

Kod

\dv

View Çağırmak

View çalıştırmak için;

Kod

select * from last10Person;

View Silmek

View silmek için;

Kod

drop view last10Person;

Common Table Expression Tanımlamak

CTE tanımlamak için;

Kod

with cte_PersonAge as(
    select firstName, lastname, extract(year from (age(now(), birthdate))) as age
    from person
)
select firstname, lastname, age from cte_PersonAge where age > 70 order by age desc

Kaynaklar

  1. PostgreSQL Create Function Statement , postgresqltutorial.com, 20.11.2022 tarihinde alındı.
  2. How to Develop a PL/pgSQL Function That Returns a Table , postgresqltutorial.com, 20.11.2022 tarihinde alındı.
  3. PostgreSQL CREATE PROCEDURE , postgresqltutorial.com, 20.11.2022 tarihinde alındı.
  4. 10 Examples of PostgreSQL Stored Procedures , enterprisedb.com, 20.11.2022 tarihinde alındı.
  5. PostgreSQL Create View with Example , guru99.com, 20.11.2022 tarihinde alındı.
  6. PostgreSQL CTE , postgresqltutorial.com, 20.11.2022 tarihinde alındı.


Beğen