Delphi projemde veritabanında(Firebird) yaptığım değişklikleri kullanıcıların sistemlerine daha kolay uygulayabilmek için otomatik güncelleme yapacak bir prog. yazmak istedim. Veri tabanında açılan alanları , trigger ve procedure leri kullanıcının sistemine yazdığım bu prog. ile uygulamak istedim.
Sorunum şu field ve tirggerdaki değişklikleri delphi 7.0 da yazmıs olduğum prog. ile kullanıcının sistemindeki veritabanına uygulayabiliyorum fakat store procedure' u veritabanında create etmede sürekli hata alıyorum. İlgili kodlarlar aşağıda;
q.Close;
q.SQL.Clear;
q.SQL.Text:='ALTER TABLE VERSIYON ADD SPADI VARCHAR(25) CHARACTER SET WIN1254 COLLATE WIN1254';
q.Open;
Örneğin üstteki kod ile versiyon tablenda SPADI alanı açılıyo.
Fakat aşağıda yazacağım kod ile store procedure oluşturma işleminde sürekli (SQL ERROR CODE = -104) hata alıyorum. Yardımlarınızı bekliyorum iyi çalışmalar...
HATA :
SQL ERROR CODE = -104
Token unkown -line 1 , char 661 ?
Kod: Tümünü seç
q.Close;
q.SQL.Clear;
q.SQL.Text:='ALTER PROCEDURE KAR_ZARAR2 ( ' +
'ESRKT VARCHAR(10), ' +
'EYL SMALLINT, ' +
'ETRH1 DATE, ' +
'ETRH2 DATE) ' +
'RETURNS ( ' +
'OSTK VARCHAR(15), ' +
'OFLG VARCHAR(10), ' +
'OTRH DATE, ' +
'OFYT DOUBLE PRECISION, ' +
'OMKTR DOUBLE PRECISION, ' +
'OLNKKOD DOUBLE PRECISION, ' +
'OBRM DOUBLE PRECISION, ' +
'OSTKBRM INTEGER, ' +
'ODKOD INTEGER) ' +
'AS ' +
'DECLARE VARIABLE BRM INTEGER; ' +
'DECLARE VARIABLE EMKTR DOUBLE PRECISION; ' +
'DECLARE VARIABLE BRMMKTR INTEGER; ' +
'DECLARE VARIABLE FLG INTEGER; ' +
'DECLARE VARIABLE ELNK DOUBLE PRECISION; ' +
'begin ' +
'for select stokkod,tarih,fiyat,miktar,birim,depo_kod ' +
'from stkhar f1 where sirket_kodu = :esrkt and mali_yil = :eyl and ' +
'tarih >= :etrh1 and tarih <= :etrh2 and flag = ''Ç'' and ((yer is null) or (yer = 8)) order by tarih into ' +
':ostk , :otrh , :ofyt , :omktr , :obrm , :odkod ' +
'do ' +
'begin ' +
'oflg = ''S''; ' +
'if (:obrm <> 0) then ' +
'ostkbrm = 1; else ' +
'ostkbrm = 2; ' +
'olnkkod = 0; ' +
'suspend; ' +
'end ' +
'end ';
q.Open;