8.2 Bildirimler

<< İçindekileri Görüntülemek İçin Tıklayın >>

Yer:  Teknik Kılavuzlar > IVEDI SQL Kullanıcı Kılavuzu > 8. Yordamsal dil (PSQL) >

8.2 Bildirimler

<ad> <tip> [= <ifade> | DEFAULT <ifade>];
DECLARE [VARIABLE] <ad> <tip> [= <ifade>];
i, j, k integer;                              -- tek tipe birkaç ad
test UnitTest = UnitTest();                   -- nesne örneği
CONST <ad> <tip> = <ifade>;                   -- ilk değer zorunlu
TYPE <ad> AS … END                            -- yerel tip
ENUM <ad> AS (a, b = 5, …)
EXCEPTION <ad> '<mesaj>'                      -- mesaj zorunlu
[AGGREGATE] FUNCTION … / PROCEDURE …          -- yerel yordam

Yerel fonksiyon örneği:

execute block
as
  test UnitTest = UnitTest();

  function typeNameOf(i TypeInfo) returns string
  as
  begin
    return i.GetTypeName();
  end;
begin
  …
end;

Bildirimlerde PSQL'e özgü tipler kullanılabilir: STRING, CSTRING, TABLE( … ), ARRAY[n] OF <tip>, ANY, TYPE OF <nesne>.

8.2.1 Diziler

Bir yerel değişken dizi olarak bildirilebilir. Uzunluk yazılırsa dizi sabit boyludur; yazılmazsa boş başlar ve ilk yazmada büyür:

<ad> ARRAY[<n>] OF <tip>      --// n yuvayla kurulur, boyu değişmez
<ad> ARRAY OF <tip>            --// uzunluk 0 başlar, yazdıkça büyür

Öğe erişimi 1 tabanlıdır — dilin geri kalanıyla aynı. length o anki uzunluğu verir, add büyüyebilir bir dizinin sonuna ekler ve eklediği öğenin 1 tabanlı sırasını döndürür:

execute block
as
  a array of integer;
  b array[3] of integer;
  n integer;
begin
  a[1] = 10;  a[2] = 20;  a[3] = 30;   --// a.length artık 3

  b[1] = 7;                            --// b.length her zaman 3

  n = a.add(40);                       --// n = 4, a.length = 4, a[4] = 40

  for n in 1 .. a.length do
    Console.PrintF(c'{0}\n', a[n]);
end

Öğe tipi denetlenir: bir ARRAY OF INTEGER'a dizge yazmak reddedilir. Bir yordamın açık parametre listesi de dizidir (PARAMS <ad> ARRAY OF <tip>); onun boyu çağrı anındaki argüman sayısıdır ve büyümez.

Sınır

Sabit boylu bir dizide sınırın dışına yazmak ve add çağırmak OUT_OF_RANGE verir; aynısı açık parametre dizisi için de geçerlidir. Dizin 0 her zaman geçersizdir (erişim 1 tabanlı). Bildirilen uzunluk ve büyüyebilen bir dizinin dizini en çok 100 000'dir.