[ÇÖZÜLDÜ] Çoklu String Sorgulama
[ÇÖZÜLDÜ] Çoklu String Sorgulama
Selamlar,
Daha önce ihtiyacım olmadığından, aşağıdaki şekilde sorgu kullanmamıştım.
{alan }IN {deger1,deger2,degerN}
Stored Procedıre içinde kullanmam gerekti. Sayısal alanlarda herhangi bir problem yok.
Fakat string alanlarda tek tırnak kullanımı gerektiğinden birçok şekilde denememe rağmen sonuç alamadım.
Acaba aramızda bu konuda tecrübesi olan var mıdır?
Daha önce ihtiyacım olmadığından, aşağıdaki şekilde sorgu kullanmamıştım.
{alan }IN {deger1,deger2,degerN}
Stored Procedıre içinde kullanmam gerekti. Sayısal alanlarda herhangi bir problem yok.
Fakat string alanlarda tek tırnak kullanımı gerektiğinden birçok şekilde denememe rağmen sonuç alamadım.
Acaba aramızda bu konuda tecrübesi olan var mıdır?
En son powertrk tarafından 02 Mar 2014 12:06 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Re: Çoklu String Sorgulama
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...
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...
Re: Çoklu String Sorgulama
Cevabınız için teşekkür ederim.
Fakat siz en basit haliyle IN kullanımını gösteren bağlantıları paylaşmışsınız.
Benim ihtiyacım olan Delphi üzerinden Stored Procedure içinde bulunan bir sorguya parametre vasıtası ile birden çok string değer gönderebilmek.
Birçok kaynakta örneğin burada integer değer gönderimi var.
Integer yalın gönderebiliyor ama string ifadeler IN içerisinde tırnak ile kullanılmak zorunda.
Bu yönde tecrübesi olan kimse varsa ve paylaşırsa sevinirim.
Fakat siz en basit haliyle IN kullanımını gösteren bağlantıları paylaşmışsınız.
Benim ihtiyacım olan Delphi üzerinden Stored Procedure içinde bulunan bir sorguya parametre vasıtası ile birden çok string değer gönderebilmek.
Birçok kaynakta örneğin burada integer değer gönderimi var.
Integer yalın gönderebiliyor ama string ifadeler IN içerisinde tırnak ile kullanılmak zorunda.
Bu yönde tecrübesi olan kimse varsa ve paylaşırsa sevinirim.
Re: Çoklu String Sorgulama
Kod: Tümünü seç
SELECT *
FROM CITY
WHERE ID_CITY IN (SELECT ID FROM GetIntegerList('1, 2, 12, 45, 75, 45'))
Kod: Tümünü seç
CREATE OR ALTER PROCEDURE "GETINTEGERLIST"("AINTEGERLIST" VARCHAR(32000))
returns (
ID integer
)
as
declare variable IntegerList varchar(32000);
declare variable CommaPos integer;
declare variable IntegerVal varchar(10);
begin
IntegerList = AIntegerList || ' ';
CommaPos = Position(',', IntegerList);
while (CommaPos > 0) do
begin
IntegerVal = Trim(SubString(IntegerList from 1 for CommaPos - 1));
if (Char_Length(IntegerVal) > 0) then
begin
if (IntegerVal similar to '[0-9]*') then
begin
ID = Cast(IntegerVal as integer);
suspend;
end
end
if (Char_Length(IntegerList) > CommaPos) then
IntegerList = SubString(IntegerList from CommaPos + 1);
else
IntegerList = '';
CommaPos = Position(',', IntegerList);
end
IntegerList = Trim(IntegerList);
if (Char_Length(IntegerList) > 0) then
begin
if (IntegerList similar to '[0-9]*') then
begin
ID = Cast(IntegerList as integer);
suspend;
end
end
end
Re: Çoklu String Sorgulama
Evet bu benim yukarıda verdiğim örnek zaten.
Bunu integer değil string ile nasıl kullanacağız.
Bunu integer değil string ile nasıl kullanacağız.
Re: Çoklu String Sorgulama
Sorun Çözülmüştür.
İhtiyacı olabilecekler için Stored Procedure içerisinde kullanımı aşağıdaki gibidir.
:GELENDEGER içerisinde gönderdiğiniz string ifadeler şu şekilde -tırnak içerisinde ve birbirinden virgül ile ayrılmış- olmalıdır:
'Veri1', 'Veri2', 'Veri3'
İhtiyacı olabilecekler için Stored Procedure içerisinde kullanımı aşağıdaki gibidir.
:GELENDEGER içerisinde gönderdiğiniz string ifadeler şu şekilde -tırnak içerisinde ve birbirinden virgül ile ayrılmış- olmalıdır:
'Veri1', 'Veri2', 'Veri3'
Kod: Tümünü seç
FOR EXECUTE STATEMENT
'SELECT ALAN FROM TABLO
WHERE
ALAN IN ('|| :GELENDEGER ||')' INTO :CIKISDEGERI
DO BEGIN
END
Re: Çoklu String Sorgulama
Merhabalar,powertrk yazdı:Sorun Çözülmüştür.
İhtiyacı olabilecekler için Stored Procedure içerisinde kullanımı aşağıdaki gibidir.
:GELENDEGER içerisinde gönderdiğiniz string ifadeler şu şekilde -tırnak içerisinde ve birbirinden virgül ile ayrılmış- olmalıdır:
'Veri1', 'Veri2', 'Veri3'
Kod: Tümünü seç
FOR EXECUTE STATEMENT 'SELECT ALAN FROM TABLO WHERE ALAN IN ('|| :GELENDEGER ||')' INTO :CIKISDEGERI DO BEGIN END
2.5.326780 Win32 kurulu firebird ile günlerdir deniyorum, Invalid variant type conversion. hatası alıyorum.
Firebird versiyon farkında olabilir mi yada bende hata.