Parametreli Stored Procedure'da Hata

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ı
Metinx
Üye
Mesajlar: 54
Kayıt: 04 Eki 2007 01:39

Parametreli Stored Procedure'da Hata

Mesaj gönderen Metinx »

Merhaba arkadaşlar,

Firebird'de parametreler ile çalışan bir Stored Procedure yapmaya çalışıyorum. Ama Where kalıbında hata veriyor.

Stored Procedure

Kod: Tümünü seç

SET TERM ^ ;

CREATE OR ALTER PROCEDURE MD_SP (
    SAYISAL_YAPI VARCHAR(10) NOT NULL COLLATE PXW_TURK,
    KAYNAK_SABLON_TABLO VARCHAR(25) NOT NULL COLLATE PXW_TURK,
    KAYNAK_SABLON_ALANI VARCHAR(25) NOT NULL COLLATE PXW_TURK,
    KAYNAK_SABLON_KOD VARCHAR(25) NOT NULL COLLATE PXW_TURK,
    KAYNAK_SABLON_ADI VARCHAR(25) NOT NULL COLLATE PXW_TURK)
RETURNS (
    SP_SABLON1 VARCHAR(25) COLLATE PXW_TURK,
    SP_SABLON2 VARCHAR(25) COLLATE PXW_TURK)
AS
DECLARE VARIABLE SABLON VARCHAR(10);
BEGIN

EXECUTE STATEMENT 'SELECT ' || :KAYNAK_SABLON_KOD || 'FROM ' || :KAYNAK_SABLON_TABLO || 'WHERE' ||:KAYNAK_SABLON_ALANI ||:KAYNAK_SABLON_ADI INTO :SABLON;

IF (STRLEN(SAYISAL_YAPI) > 3) THEN
BEGIN
EXCEPTION UYAR;
EXIT;
END

WHILE (STRLEN(SAYISAL_YAPI) < 3) DO

SAYISAL_YAPI = '0' || SAYISAL_YAPI;

SP_SABLON2=SAYISAL_YAPI;

SP_SABLON1=SABLON;

  SUSPEND;
END^

SET TERM ; ^

/* EXISTING PRIVILEGES ON THIS PROCEDURE */

GRANT EXECUTE ON PROCEDURE MD_SP TO SYSDBA;
Hata Olarak

Kod: Tümünü seç

'WHERE' ||:KAYNAK_SABLON_ALANI ||:KAYNAK_SABLON_ADI
Yardımlarını rica ediyorum.

Sağlıkla kalın.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Parametreli Stored Procedure'da Hata

Mesaj gönderen freeman35 »

'WHERE' sağ ve soluna boşluk ver ' WHERE ' komutları ayrman gerek
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
Metinx
Üye
Mesajlar: 54
Kayıt: 04 Eki 2007 01:39

Re: Parametreli Stored Procedure'da Hata

Mesaj gönderen Metinx »

Şu şekilde düzelttim ama hata vermeye devam ediyor.

Kod: Tümünü seç

EXECUTE STATEMENT 'SELECT ' || :KAYNAK_SABLON_KOD || 'FROM ' || :KAYNAK_SABLON_TABLO || ' WHERE ' ||:KAYNAK_SABLON_ALANI ||:KAYNAK_SABLON_ADI INTO :SABLON;
Hata :

Kod: Tümünü seç

Invalid Token
WHERE
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Parametreli Stored Procedure'da Hata

Mesaj gönderen freeman35 »

ibexper vs gibi bir tool la procedure ü debug et, oluşan sql string i kontrol et where de kriterin yok, yani
:KAYNAK_SABLON_ALANI ||' = '||:KAYNAK_SABLON_ADI gibi. bir kıyaslaman yok gibi görünüyor, o yüzden oluşan string i kotrol et.
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Parametreli Stored Procedure'da Hata

Mesaj gönderen unicorn64 »

ayrıca FROM dan önce de bir boşluk olmalı
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Kullanıcı avatarı
Metinx
Üye
Mesajlar: 54
Kayıt: 04 Eki 2007 01:39

Re: Parametreli Stored Procedure'da Hata

Mesaj gönderen Metinx »

freeman35 ve unicorn64 çok teşekkür ederim. söylediklerinizden yola çıkarak şu an için çözüm buldum. :bravo:
Cevapla