With DataModule1.SPUstProjeEkle do
begin
Open;
Parameters.ParamByName('ad').value:=edit2.text;
Parameters.ParamByName('kod').value:=Edit1.Text;
Parameters.ParamByName('seviye').Value:=TreeView1.Selected.Level;
Parameters.ParamByName('ustid').Value:=ustid;
ExecProc;
end;
execproc satırına geldiğinde 'parameter object is improperly defined' gibi bir hata alıyorum..veritabanı oracle
stroredprocedure de bir sorun yok
bu Spyi delphide nasıl çalıştırabilirim
Bugünlerde ADOStoredProc ile nekadar çok sorun yaşayan forumdaşımız var Ben hiç kullanmadım bu componenti ve kullananlara da ADOQuery kullanmasını tavsiye ediyorum, ben hep onu kullanıyorum ve şimdiye kadar bu konuda bir sorun yaşamadım.
Selamlar.
UstId nedir, hangi tiptedir, keza sp'deki ustid'nin tipi nedir?Value olarak kullanmanızdan kaynaklandığını sanıyorum.AsInteger ya da muadili bir atama kullanarak deneyin.
Kolay gelsin.
Eğer procedure'ün değer döndürmüyorsa AdoQuery1.Open; yerine AdoQuery1.ExecSQL; kullanılması gerekiyor. Bundan kaynaklanıyor gibi gelmedi bana hata ama bir de böyle dener misin(tabi değer döndürmüyorsan)?
CREATE OR REPLACE PROCEDURE USTPROJE_EKLE
(AD IN VARCHAR2,
KOD IN VARCHAR2,
SEVIYE IN NUMBER,
USTID IN NUMBER
)
IS
BEGIN
INSERT INTO USTPROJE VALUES (USTPROJE_SEQ.NEXTVAL,AD,KOD,SEVIYE,USTID);
COMMIT;
END;
adoquery1.Exec yaptıgımda da aynı hatayı 'invalid SQL statement hatası veriyor..parametreleri düzgün gönderemiyorum sanırım
Deneme şansım olmadığından bir şey diyemiyorum ama;
* Procedure ilk önce delphi dışı bir SQL editörle çalıştırıp sonra delphi ye uyarlamak..Ben böyle yapıyorum..Kullanışlı oluyor..
* Procedure ismini büyük harfle yazmayı dene..USTPROJE_EKLE gibi...
* Procedure de kullandığın input değişkenleriyle Tablo alan adların aynı olmaması lazım..Bundan da kaynaklanabiliyor..Senin ki aynı...
* Son olarakta Showmessage(AdoQuery1.SQL.Text ); olarak çıktıya bakarak kontrol edebilirsin...Bu önemli...
* Parametre kullanırsan syntax. vs.. hatalarıyla uğraşmassın...
with DataModule1 do
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
AdoQuery1.SQL.Text := 'EXEC USTPROJE_EKLE (''deneme'',''1'',2,3)';
Memo1.Text:=ADOQuery1.SQL.Text;
AdoQuery1.ExecSQL;
end;