SELECT komutunun temel yapısı

Veritabanından bir tabloya veri okumak için TROIA'da özel bir SELECT ... INTO söz dizimi kullanılır — standart SQL'e çok benziyor ama sonucu doğrudan bir TROIA tablo değişkenine bağlar:

SELECT [ALL | DISTINCT] {kolonlar}
    FROM {tablo} [, {digertablolar}]
    [INNER | OUTER JOIN {jointablo} ON {onkosulu}]
    [WHERE {kosul}]
    [ORDERBY {kolonlar} [ASC | DESC]]
    [INTO {hedeftablo}];

Örnek: filtreleme ve sıralama

OBJECT:
    TABLE TABLEVAR1;

SELECT CLIENT, USERNAME, PWDVALIDITY
    FROM IASUSERS
    WHERE CLIENT == '00'
    ORDER BY PWDVALIDITY DESC
    INTO TABLEVAR1;

ORDERBY mı, ORDER BY mı?

TROIA'nın kendi anahtar kelimesi boşluksuz ORDERBY'dir, ama standart SQL yazımı olan ORDER BY (boşluklu) de destekleniyor — örnekte olduğu gibi ikisini karışık görebilirsiniz.

Değişkenleri sorguya bağlamak

TROIA değişkenlerini doğrudan WHERE koşulunda kullanabilirsiniz; interpreter, değişkenin veri tipine göre sorguya otomatik bind eder — string birleştirme yapıp SQL enjeksiyonu riski almanıza gerek yok:

OBJECT:
    STRING PCLIENT,
    TABLE TABLEVAR1;

PCLIENT = '00';

SELECT USERNAME
    FROM IASUSERS
    WHERE CLIENT == PCLIENT
    INTO TABLEVAR1;

INTO: sonucu tabloya bağlamak

INTO anahtar kelimesi sadece hedef tablo değişkenini belirtir; SELECT komutu seçilen veriyi bu değişkene atar. Hedef tablo daha önce tanımlanmış olmalıdır (OBJECT/GLOBAL/LOCAL ile TABLE tipinde).

Sonuç

SELECT ... INTO, TROIA'da veritabanı okumanın temel yapı taşı — WHERE ile filtreleme, ORDERBY/ORDER BY ile sıralama, INTO ile sonucu tabloya bağlama. Değişkenleri doğrudan koşulda kullanmak hem daha güvenli hem daha okunaklı, string birleştirerek sorgu kurmaktan kaçının.