İçeriğe geç

SQL Sorgu

SQL sorgu, bir kez yazıp adıyla sakladığınız sorgudur. Aynı sorgunun birkaç script ve raporda tekrarlanması yerine tek yerde durur; değiştiğinde hepsi birden güncel olur.

SQL Sorgu ekranı — üstte liste, altta editör ve sonuç paneli

Ekran iki bölümdür. Üstte kayıtlı sorguların listesi vardır; sütunlarda proje, ad, açıklama ve kaydı kimin ne zaman oluşturup güncellediği görünür. Altta SQL Editor ve yanında SQL Result paneli durur.

AlanAçıklama
NameSorgunun adı; script’ten bu adla çağrılır
DescriptionAçıklama
QuerySQL metni, en çok 32.767 karakter

Sorgu metni, saklanan diğer çalıştırılabilir içerik gibi bir bütünlük damgası taşır.

Listeden bir sorgu seçtiğinizde metni editöre gelir. Editörün solundaki açılır listeden sorgunun hangi veri kaynağında çalışacağı seçilir; sağdaki düğmeler arama, biçimlendirme, çalıştırma ve kaydetmedir. Sonuç sağdaki panelde görünür.

Buradaki çalıştırma bir deneme değildir: sorgu gerçekten seçili kaynakta koşar. Çalıştırmak için RUN_QUERY yetkisi gerekir.

Kayıtlı bir sorgunun metnini almak için:

var sql = ins.getCustomSqlQuery('GunlukUretim');
var res = ins.runSql(sql); // varsayılan veri kaynağı
var res2 = ins.runSql('UretimDB', sql); // belirli bir kaynak

Çağrı sorgunun metnini döndürür, sonucunu değil; hangi veri kaynağında çalışacağına siz karar verirsiniz. Aynı sorguyu birden çok kaynakta (örneğin test ve üretim) çalıştırmak bu sayede mümkündür.

Dönen değer satırların kendisi değil, bir sonuç kümesidir. Tek ifadelik bir sorguda tek sonuç vardır; arka arkaya birkaç ifade çalıştıran bir sorguda her ifade için bir sonuç gelir.

var res = ins.runSql('SELECT id, name FROM product');
res.getSize(); // sonuç sayısı
var first = res.getResult(0);
first.getType(); // "list" ya da "scalar"
var rows = first.getRows(); // satırlar: sütun adıyla anahtarlanmış nesneler
rows[0].name;

Satır döndüren bir ifade list tipinde gelir ve getRows() ile okunur; satır döndürmeyen bir ifade (INSERT, UPDATE, DELETE) scalar tipindedir ve getResult() ile etkilenen satır sayısını verir.

Metin script’e verilmeden önce damgasıyla karşılaştırılır. Kurulumun bütünlük kipi:

KipDavranış
OFFDenetim yapılmaz
WARNUyuşmazlık proje günlüğüne yazılır, metin yine de verilir
ENFORCEHata verilir, script metni hiç görmez

Denetim script’e verilirken yapılır, kayıt okunurken değil. Bu bilinçlidir: damgası tutmayan bir sorgu bu ekranda görünmeye devam eder, böylece ne olduğunu görüp düzeltebilirsiniz — ENFORCE kipinde bile kaydı onaracak ekran elinizden alınmaz.