|
<< İçindekileri Görüntülemek İçin Tıklayın >> Yer: Teknik Kılavuzlar > IVEDI SQL Kullanıcı Kılavuzu > 8. Yordamsal dil (PSQL) > 8.10 Bağlam değişkenleri |
| Ad | Tip | Değer |
|---|---|---|
CURRENT_CONNECTION | INTEGER | Bağlantı kimliği |
CURRENT_TRANSACTION | INTEGER | İşlem kimliği |
CURRENT_DATE | DATE | İşlemin başlangıç tarihi |
CURRENT_TIME | TIME WITH TIME ZONE | İşlemin başlangıç saati, oturumun saat diliminde (SET TIME ZONE) |
CURRENT_TIMESTAMP | TIMESTAMP WITH TIME ZONE | İşlemin başlangıç anı, oturumun saat diliminde |
LOCALTIME, LOCALTIMESTAMP | TIME / TIMESTAMP | Aynı anın oturum dilimindeki duvar saati, dilimsiz (SQL:2011 6.32) |
CURRENT_USER, USER, SESSION_USER | nesne adı | Kullanıcı adı, yoksa 'NONE' |
CURRENT_USER_ID | INTEGER | Kullanıcı nesne kimliği |
CURRENT_ROLE | nesne adı | Rol, yoksa 'NONE' |
ROW_COUNT | INTEGER64 | Son deyimin etkilediği satır sayısı |
INSERTING, UPDATING, DELETING | BOOLEAN | Tetikleyici gövdesinde o anki olay |
Bütün CURRENT_* tarih/saat değerleri işlemin başlangıç anıdır,
deyimin değil. Deyim anı için SYSTimeStamp() fonksiyonu kullanılır
(parantezli — o bir fonksiyondur, bağlam değişkeni değil). CURRENT_SCHEMA
yoktur. SQL metnine çeviren motorlarda CURRENT_USER_ID ve ROW_COUNT
bir uyarıyla olduğu gibi geçer.
Kaynak konumunu ve derleme bağlamını veren sabitler:
__FILE__ __FILE_FULL__ __LINE__ __CHARPOS__
__MAIN_FILE__ __MAIN_FILE_FULL__ __CURRENT_PATH__
__DATE__ __TIME__ __TIMESTAMP__
__METHOD__ __METHOD_DECL__ __METHOD_FULL__ __METHOD_LINE__
__TYPE__ __TYPE_FULL__Platform makroları ön işlemcinin tanım listesinde her bağlantıda hazırdır: sunucu Windows'ta
çalışıyorsa __WINDOWS__, Linux'ta __LINUX__ tanımlıdır (yalnız biri) ve
__PLATFORM__ tırnaklı dizge sabiti olarak 'windows' / 'linux'
verir. Platforma bağlı bir bağlantı dizgesi ya da dosya yolu böyle dallanır:
#ifdef __LINUX__
create database t storage engine odbc parameters 'Driver Name=PostgreSQL Unicode; ...';
#else
create database t storage engine odbc parameters 'Driver Name=PostgreSQL Unicode(x64); ...';
#endif__IVEDI__ makrosu da motorun kendi tanımladıklarındandır, ama değeri o anki
#MODE'dan gelir: #MODE EXECUTE'ta tanımlıdır,
#MODE CONVERT TO <hedef> ve #MODE PRECOMPILE'da tanımsızdır.
Yalnız IVEDI'de anlamı olan kod bununla işaretlenir: katalog geçişinde (EXECUTE) nesne kataloğa girer,
yani seviye 3/4 eksiksiz kalır; çevrimde blok hiç derlenmez ve üretilen metinde hiç yoktur
— işlevsel bir kod yoruma alınıp kapatılmış olmaz.
Üretim betiklerinde yalnız IVEDI'ye ait nesneler bu makroyla değil,
ATTRIBUTES (IVEDI_ONLY = TRUE) ile yazılır (bkz. IVEDI_ONLY nesneler);
hedefe göre değişen kod NATIVE_SQL ile. Üretim kodunda ne __IVEDI__ ne de
DIALECT_* dalı bulunur.
Kip bir betiğin ortasında değişebilir ve makro o noktadan sonra doğru cevabı verir; bu yüzden tanım
listesinde tutulmaz, kipten hesaplanır. #IFDEF, #IFNDEF ve
#IF defined(...) aynı cevabı verir. Betikten #DEFINE __IVEDI__ ya da
#UNDEF __IVEDI__ yazılamaz: ikisi de adıyla reddedilir.