SP içinde GOTO ile yönlendirme nasıl yapılır ?
SP içinde GOTO ile yönlendirme nasıl yapılır ?
FB 1.5 SP içinde GOTO ile yönlendirme yapmam gerekiyor bulabildiğim konular whenever ve goto label ama bunun ötesinde hiç bir şey bulamadım bilen varmı ?
kolay gele
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 !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Selamlar,
Nasıl yani? Biraz açar mısın?
Kolay Gelsin.
Nasıl yani? Biraz açar mısın?
Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
baktıgım kadarıyla abi goto hata yakalamada yonlendirme yapıyor.
yani soyle bir hata,uyarı vs. (parametrik bildiriliyor) olunca sp icinde goto ile belirtilen labele atlama yapılıyor.
klasik programlamadaki (ama programcılar tarafından kullanılmayan) goto yu kullanmak istiyorsan bunun yerine while-do cozum uretebilir.
yani soyle bir hata,uyarı vs. (parametrik bildiriliyor) olunca sp icinde goto ile belirtilen labele atlama yapılıyor.
klasik programlamadaki (ama programcılar tarafından kullanılmayan) goto yu kullanmak istiyorsan bunun yerine while-do cozum uretebilir.
ÜŞENME,ERTELEME,VAZGEÇME
Kod: Tümünü seç
BEGIN
INSERT INTO ADDRESS (...);
WHEN SQLCODE -803 DO
EXCEPTION addr_already_exists;
END
END
Kod: Tümünü seç
BEGIN
...
WHEN ANY DO
BEGIN INSERT INTO EXC
(E_GDSCODE, E_SQLCODE) VALUES (GDSCODE, SQLCODE)
END
END
Tam olarak istediğim bir sürü kod var, bu kodlar 4 koşula göre düzenli bu koşullarda SP ye parametre olarak giriyor. SP nin sonucu birden fazla row dönebiliyor yani SP içinde for var. Buraya kadar her şey normal ve problem yok düzgün problemsiz çalışıyor,
ama, eğer hiç bir row dönmez ise, Aynı kodu kopyalamak yerine, Sadece Parametrenin birini değiştirip başa göndermem yeticek, bunuda aklıma ilk gelen yöntem GOTO idi, Manual lara bakıncada
Ben algoritmamı değiştirdim istediğim sonucu elde ettim ama hala kafamda kaldı
yazarken aklıma geldi while ... do içine sokarsam ve koşuluda kendim verirsem istediğim yönlendirme sağlanmış olucak, ama bi çuval iş yap sen kalk LABEL koyama çok ayıp walla
:P
Kolay gele
ama, eğer hiç bir row dönmez ise, Aynı kodu kopyalamak yerine, Sadece Parametrenin birini değiştirip başa göndermem yeticek, bunuda aklıma ilk gelen yöntem GOTO idi, Manual lara bakıncada
şimdi bu lafı görüncede "GOTO label" doğal olarak label vermem yeticek sanıyordum ama maaselef olmadı öyle değilmiş. Yukarıdaki alıntıdanda başka tek kelime bir şey bulamadım internette.Argument
Description
NOT FOUND
Traps SQLCODE = 100, no qualifying rows found for the executed statement
SQLERROR
Traps SQLCODE < 0, failed statement
SQLWARNING
Traps SQLCODE > 0 AND < 100, system warning or informational message
GOTO label
Jumps to program location specified by label when a warning or error occurs
CONTINUE
Ignores the warning or error and attempts to continue processing
Ben algoritmamı değiştirdim istediğim sonucu elde ettim ama hala kafamda kaldı

yazarken aklıma geldi while ... do içine sokarsam ve koşuluda kendim verirsem istediğim yönlendirme sağlanmış olucak, ama bi çuval iş yap sen kalk LABEL koyama çok ayıp walla

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 !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Baba sen de GOTO'suz yapıp Recursive olarak yeni parametrelerde SP'yi yeniden çağır gitsin 
Kolay Gelsin.

Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Recursive ne olaki ??? Delphi içinde callback gibi bişimi yoksa ?Baba sen de GOTO'suz yapıp Recursive olarak yeni parametrelerde SP'yi yeniden çağır gitsin
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 !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!

Yani kendi kendini çağırma yöntemleri için kullanılır.
Mesela bir labirent çözdüren rutin yazdın yada directory çözümlerken kullanılan procedure'lere veya functionlara recursive (yani kendi kendini çağıran) yöntemler denir.
Kolay gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
freeman ustam görmüşsünüzdür büyük ihtimalle ama şu linke bir baksanız:
http://www.ibexpert.info/documentation/ ... /1070.html
http://www.ibexpert.info/documentation/ ... /1070.html
Bu linktekide benim bulduklarımdan farklı değil. Birisi bi tarihte yazmış bu sayfayı(hangi versiyon ve SQL belli değil) kelimelerin yerlerini değiştirip değiştirip yazıyorlar.
Ben FireBird 1.5 kullanıyorum, gerçi deiğerlerindede farklı olduğunu sanmıyorum
2 not found diye komut seti yok vs vs
Error, AllDone delphi deki gibi label yani o satıra yönlendirilmesi gerekir zaten budaki açıklamalarda hep aynı yönde
o label kullanılıyorsa nasıl ? yani label nasıl tanımlanacak? göndermesi tamamda "AHABURA:" bigi birşey yazıpda kodu buraya yönlendiremiyorsun.
Son çare olarak eğer yönlendirme yapılmak gerekiyorsa While ... do kullanılmalı. Tamaracka.com dan arattıığımda biriside aynısını yazmıştı.
Ben algoritmayı değiştirdim, tabi 1 güne patladı
Kolay gele
Ben FireBird 1.5 kullanıyorum, gerçi deiğerlerindede farklı olduğunu sanmıyorum
1 GO TO bitişik yazılmalıEXEC SQL
WHENEVER SQLERROR GO TO Error; /* Trap all errors. */
EXEC SQL
WHENEVER NOT FOUND GO TO AllDone; /* Trap SQLCODE = 100 */
EXEC SQL
WHENEVER SQLWARNING CONTINUE; /* Ignore all warnings. */
2 not found diye komut seti yok vs vs
Error, AllDone delphi deki gibi label yani o satıra yönlendirilmesi gerekir zaten budaki açıklamalarda hep aynı yönde
ama FB bunu okumamış anlaşılanUse GOTO label to jump to an error-handling routine in an application.

o label kullanılıyorsa nasıl ? yani label nasıl tanımlanacak? göndermesi tamamda "AHABURA:" bigi birşey yazıpda kodu buraya yönlendiremiyorsun.

Son çare olarak eğer yönlendirme yapılmak gerekiyorsa While ... do kullanılmalı. Tamaracka.com dan arattıığımda biriside aynısını yazmıştı.
Ben algoritmayı değiştirdim, tabi 1 güne patladı

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 !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!