ibexpert ile ilk store procedure denemesi
Re: ibexpert ile ilk store procedure denemesi
Firebirdde SP ms sql den biraz farklıdır.
Kod: Tümünü seç
create procedure sp_basit(id integer)
returns(jeton varchar(15))
as
begin
for select jeton from tbl_hesap where kosul_alanınız = :id into :jeton do
begin
suspend;
end
end
Re: ibexpert ile ilk store procedure denemesi
Kod: Tümünü seç
create procedure sp_basit(id integer)
returns(jeton varchar(15))
as
begin
for select jeton from tbl_hesap where ID = :id into :jeton do
begin
suspend;
end
end
Re: ibexpert ile ilk store procedure denemesi
s.a.
senin yazdığın kodlar ile ibexpertin çalıştırdığı kodlar aynı değil. ondan dolayı hata alıyorsun.
o kodları query editör kullanarak çalıştırman lazım. ibexpert in kullanıcı arayüzünü incele...
editör procedure adını, input ve output parametrelerini vb. ilgili yerlere yazman lazım, kod yazılan alana sadece Begin....End bloğunu yazman lazım.
kolay gelsin.
senin yazdığın kodlar ile ibexpertin çalıştırdığı kodlar aynı değil. ondan dolayı hata alıyorsun.
o kodları query editör kullanarak çalıştırman lazım. ibexpert in kullanıcı arayüzünü incele...
editör procedure adını, input ve output parametrelerini vb. ilgili yerlere yazman lazım, kod yazılan alana sadece Begin....End bloğunu yazman lazım.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Re: ibexpert ile ilk store procedure denemesi
internetden bulduğum videoları inceleyip olayı anlamaya çalışıyorum
triger örnegi buldum birşeyler anlamaya başladım
bu şekilde yeni kayıt girdiğimde çalışıyor tüm colonlara 30 değeri yazıyor hata yok
yukardaki şekilde aşagıdaki hatayı alıyorum
This column cannot be updated because it is derived from an SQL function or expression.
attempted update of read-only column.
burda güncelleme yapamazsın çünkü colon sadece okunabilir diyor sanırım ama hangisi ORT kolonu olamaz yukardaki örnekte çalışıyor
ID kolonu olamaz onu değiştimeye çalışmıyoruz zaten
hata neden kaynaklanıyor olabilir acaba...
triger örnegi buldum birşeyler anlamaya başladım
Kod: Tümünü seç
AS
begin
/* Trigger text */
update TEST set ORT=30;
end
Kod: Tümünü seç
AS
begin
/* Trigger text */
new.id=gen_id(gen_test_id,1);
update TEST set ORT=30 where ID=new.id;
end
This column cannot be updated because it is derived from an SQL function or expression.
attempted update of read-only column.
burda güncelleme yapamazsın çünkü colon sadece okunabilir diyor sanırım ama hangisi ORT kolonu olamaz yukardaki örnekte çalışıyor
ID kolonu olamaz onu değiştimeye çalışmıyoruz zaten
hata neden kaynaklanıyor olabilir acaba...
Re: ibexpert ile ilk store procedure denemesi
Selam;
ibexpert ile yeni procedure oluşturmak çok kolaydır, siz yeni procedure dediğinizde sağ üst köşede NEW_PROCEDURE yazan yere procedur un adını yazacaksınız, procedure dışardan değer girecekseniz Input Parameters kısmında tanımlıcaksınız, dışarıya değer verecekseniz Output Parameters kısmında tanımlıcaksınız, procedure içersinde değişken kullanıcaksınız Variables kısmında tanımlıcaksınız. Tekrardan create procedure vs.vs. yazmanıza gerek yok, normal sql komutlarını kullanıcaksınız, yazım şekli de zaten delphi ile aynıdır, begin-end vs.vs.
kolay gelsin...
ayrıca aşağıdaki kodu before insert olayında değil after insert olayında yaparsanız sorun olmaz,
ibexpert ile yeni procedure oluşturmak çok kolaydır, siz yeni procedure dediğinizde sağ üst köşede NEW_PROCEDURE yazan yere procedur un adını yazacaksınız, procedure dışardan değer girecekseniz Input Parameters kısmında tanımlıcaksınız, dışarıya değer verecekseniz Output Parameters kısmında tanımlıcaksınız, procedure içersinde değişken kullanıcaksınız Variables kısmında tanımlıcaksınız. Tekrardan create procedure vs.vs. yazmanıza gerek yok, normal sql komutlarını kullanıcaksınız, yazım şekli de zaten delphi ile aynıdır, begin-end vs.vs.
kolay gelsin...
ayrıca aşağıdaki kodu before insert olayında değil after insert olayında yaparsanız sorun olmaz,
Kod: Tümünü seç
AS
begin
update TEST set ORT=30 where ID=new.id;
end
Re: ibexpert ile ilk store procedure denemesi
teşekkürler hocam
update TEST set ORT=30 where ID=new.id; //bu şekilde hata vermeden çalıştı
procedure ilğili önerilerinizi dikkate alarak basit bir örnek hazırlamaya çalışacağım inşallah olur
saygılarımla
update TEST set ORT=30 where ID=new.id; //bu şekilde hata vermeden çalıştı
procedure ilğili önerilerinizi dikkate alarak basit bir örnek hazırlamaya çalışacağım inşallah olur
saygılarımla
Re: ibexpert ile ilk store procedure denemesi
yukardaki şekilde 15 değerini dışarı gönderen basit bir store procedure yaptım hata vermeden derledi...
şimdi delphi tarafından bu 15 bilgisini almaya çalışacağım
bunun için delphi sayfama
1-IBDatabase1
2-IBTransaction1
3-IBQuery1
4-StoredProc1
5-DataSource1
eklemem yeterli sanırım kurcalayarak bilğiyi almaya çalışacağım fakat netde araştırdım bu konuyu anlatan bir bölüm bulamadım çok tırmalamadan çözmek için
örnek anlatan bir site var mı ben yanlışmı arıyorum.
veya basit bir örnek verebilirmisiniz..
saygılarımla
Re: ibexpert ile ilk store procedure denemesi
Kod: Tümünü seç
procedure test;
var
gelen:integer;
begin
DMvt.IBQuery1.Close;
DMvt.IBQuery1.SQL.Clear;
DMvt.IBQuery1.SQL.Add('select * from NEW_PROCEDURE where ID=1');
DMvt.IBQuery1.Open;
gelen:=DMvt.IBQuery1.fieldbyname('OUTDEGER').value;
ShowMessage(IntToStr(gelen) );
end;
Re: ibexpert ile ilk store procedure denemesi
Kod: Tümünü seç
DMvt.IBQuery1.SQL.Add('select * from NEW_PROCEDURE ');
artık gerisini deneme yanılma -araştırma yöntemiyle geliştiririz...
emeği geçen fikir ve destek veren tüm hocalarıma saygılar sevgiler
Re: ibexpert ile ilk store procedure denemesi
Tekrar selam,
Eğer stored proc. u tablo gibi kullanacaksanız onu table olarak görmeniz gerek.
Şöyleki;
sizin örneğinize göre ;
şeklinde bir procedure u new_procedure adında ve alan adı outdeger olan tek alanlı bir tablo gibi düşünün, sql ile çekerken de ;
select outdeger from new_procedure yazmanız normaldir, siz out olarak herhangi bir id tanımlamadığınız için where id=xxx diyemezsiniz.
ayrıca şu şekilde de kullanabilirsiniz...
bu dışarıya XXXX tablosunun kayıt sayısını döndürür.
net de oldukça fazla örnek bulunabilir. kolay gelsin.
Eğer stored proc. u tablo gibi kullanacaksanız onu table olarak görmeniz gerek.
Şöyleki;
sizin örneğinize göre ;
Kod: Tümünü seç
declare variable jeton integer;
begin
jeton=15;
outdeger=jeton;
suspend;
end;
select outdeger from new_procedure yazmanız normaldir, siz out olarak herhangi bir id tanımlamadığınız için where id=xxx diyemezsiniz.
ayrıca şu şekilde de kullanabilirsiniz...
Kod: Tümünü seç
declare variable adet integer;
begin
SELECT COUNT(kod) FROM XXXX INTO :adet;
suspend;
end
net de oldukça fazla örnek bulunabilir. kolay gelsin.