FireBird 1.5 release Yeni Özellikler

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

FireBird 1.5 release Yeni Özellikler

Mesaj gönderen gkimirti »

tam inceleme fırsatım olmadı ama kabaca guzel seyler eklediklerini soyleyebilirim
gozume ilk carpan
CURRENT_USER and CURRENT_ROLE
kullanımı hakkında da ornek bir procedure yazmıslar

Kod: Tümünü seç

CREATE GENERATOR GEN_USER_LOG;
CREATE DOMAIN INT_64 AS NUMERIC(18,0);
COMMIT;

CREATE TABLE USER_LOG(
  LOG_ID INT_64 PRIMARY KEY NOT NULL,
  OP_TIMESTAMP TIMESTAMP,
  LOG_TABLE VARCHAR(31),
  LOG_TABLE_ID INT_64,
  LOG_OP CHAR(1),
  LOG_USER VARCHAR(8),
  LOG_ROLE VARCHAR(31));
COMMIT;
log tutan bir tablo olusturup
buna da bir trigger yazmıs abilerim

Kod: Tümünü seç

CREATE TRIGGER ATABLE_AI FOR ATABLE
ACTIVE AFTER INSERT POSITION O AS
BEGIN
INSERT INTO USER_LOG VALUES(
GEN_ID(GEN_USER_LOG, 1),
CURRENT_TIMESTAMP,
'ATABLE',
NEW.ID,
'I',
CURRENT_USER,
CURRENT_ROLE);
END
her yeni kayıt eklendiginde bunun hangi user tarafından
yapıldıgını bir log tablosuna yazmak benim de yapmak istedigim bir seydi...

Diger bir guzellik ise SELECT FIRST ve SELECT SKIP
ilki mssql ve access teki TOP ile aynı isi yapıyor galiba

Bir baska goze carpan ise ROW_COUNT
bununla ilgili de hos bir ornek yazmıs abilerimiz

Kod: Tümünü seç

UPDATE TABLE1 SET FIELD1 = 0 WHERE ID = :ID;
IF (ROW_COUNT = 0) THEN
INSERT INTO TABLE1 (ID, FIELD1) VALUES (:ID, 0);
Simdilik gozume carpanlar bunlar
aslında daha bir cok yeni ozellik katmıslar
ilgilenenlere duyurulur:)
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Gökmen'in yazdıklarına ek olarak
* Turkish ISO8859_9 character set eklenmiş.
* Procedure veya Trigger'larda bir stringin içine bir query veya benzeri bir SQL cümleciği oluşturularak bunun işletmesi sağlanmış. MS-SQL'de vardı diğerlerinde de var sanırım. Artık FB'de de var :)
* CASE'de karmaşık condition'lar verilebiliyor.
* Trigger'larda INSERTING, DELETING ve UPDATING değişkenleri getirilmiş. O anda sistem hangi işle meşgul ise bunlar True haline geliyor :)

vs. vs. Daha okuyorum ama 1.5 baya bi eklentilerle geldi. Sanırım 2.0'a geçtiğinde MS-SQL'i yakalayacak (İNŞALLAAAAAAAAAAAAAAAAAAHH)

Bu arada Gökmen, ERTELEM yazısını Sarı yapma pek okunmuyor, örneğin Navy'e çevir daha okunaklı olur sanırım :)

Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

tamam abi degistiririm
yalnız bir konuya acıklık getireyim
procedure yada trigger icindeki execute statement
select querylerini kapsamıyor diye biliyorum
ilerde o da olur insallah
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Gökmen'im o kadar beklemene gerek yok, 1.5'de var,

Release Notes'tan alıntı yaptım EXECUTE STATEMENT'ın 2. ve 3. örnekleri.
Syntax 2
Executes <string> as SQL operation, returning single data row. Only singleton SELECT operators may be
executed with this form of EXECUTE STATEMENT.
EXECUTE STATEMENT <string> INTO :var1, […, :varn] ;
Example
CREATE PROCEDURE DynamicSampleTwo (TableName VARCHAR(100))
AS
DECLARE VARIABLE Par INT;
BEGIN
EXECUTE STATEMENT ’SELECT MAX(CheckField) FROM ’ || TableName INTO :Par;
IF (Par > 100) THEN
EXCEPTION Ex_Overflow ’Overflow in ’ || TableName;
END
Syntax 3
Executes <string> as SQL operation, returning multiple data rows. Any SELECT operator may be
executed with this form of EXECUTE STATEMENT.
FOR EXECUTE STATEMENT <string> INTO :var1, …, :varn DO
<compound-statement>;
Example
CREATE PROCEDURE DynamicSampleThree (
TextField VARCHAR(100),
TableName VARCHAR(100))
RETURNS (Line VARCHAR(32000))
AS
DECLARE VARIABLE OneLine VARCHAR(100);
BEGIN
Line = ’’;
FOR EXECUTE STATEMENT
’SELECT ’ || TextField || ’ FROM ’ || TableName INTO :OneLine
DO
IF (OneLine IS NOT NULL) THEN
Line = Line || OneLine || ’ ’;
SUSPEND;
END
Additonal notes about EXECUTE STATEMENT
The ‘EXECUTE STATEMENT’ DSQL string cannot contain any parameters in any syntax variation. All
variable substitution into the static part of the SQL statement should be performed before the
execution of EXECUTE STATEMENT.
Görüldüğü üzere Singleton ve Multiple Rows şeklinde kullanılabilmekte.

Bilginiz olsun diye yazdım. Bakarsın ihtiyacınız olur.

Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

hmmm...demekki burası benim yanıldıgım yer yanlıs anlamısım:)

Syntax 1
Executes <string> as SQL operation that does not return any data rows, viz. INSERT, UPDATE, DELETE,
EXECUTE PROCEDURE or any DDL statement except CREATE/DROP DATABASE.

meger insert,update,delete islemleri datarows dondurmez demek istiyormus
eee biliyok zaten:)
neyse bunu acıklıga kavusturdugumuz iyi oldu
SP ile dinamik raporlar gelsin artık
ver parametreleri o hazırlasın sqli
cok rahat olacak yani
bu firebird muthis bisi beee

abi tum releasenote ları okudunmu
sysdba/masterkey hakkında bisey varmı
yani bu sifre degistirilip ikinci ucuncu sahıslar tarafından db nin gizlenmesi
yapılabiliyormu?bu konuda bi sey duydunmu?
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Walla taradım ama bulamadım. Var olan sysdba/masterkey olaylarını ancak bahsettiği şeyler Linux üzerinde sürümü ile ilgili. Testing Installation şeklinde ve ISQL'de nasıl set edebileceğin üzerine var.

Eğer denk gelirse iletirim.

Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Cevapla