hi...
i use Mydac 3.55.022 and Delphi 7...
my stored function is :
CREATE FUNCTION `func_SafBakiye`(borclu double, alacakli double,sifirla Bool ) RETURNS double
BEGIN
declare pSatirBakiyeTipi Int default 0;
declare pSafBakiye double;
declare pBA char;
if sifirla=1 then
set @safBakiye=0;
set @BA='.';
END IF;
if not isnull(borclu) then set pSatirBakiyeTipi=1;
elseif not isnull(alacakli) then set pSatirBakiyeTipi=2;
else
set pSatirBakiyeTipi=0;
end if;
set @pi=psatirbakiyetipi;
if pSatirBakiyeTipi=1 then set pSafBakiye=ifnull(@SafBakiye,0)+ifnull(borclu,0)-ifnull(alacakli,0);end if;
if pSatirBakiyeTipi=2 then set pSafBakiye=ifnull(@SafBakiye,0)-ifnull(alacakli,0)+ifnull(borclu,0);end if;
set @SafBakiye=pSafBakiye;
set @SafBakiye=Cast(@SafBakiye as decimal(20,10));
case sign(@SafBakiye)
when 1 then set pBA='B';
when -1 then set pBA='A';
when 0 then set pBA='.';
end case;
set @BA=pBA;
return pSafBakiye;
END;
first query is :
select cari_id, entegrasyon.entegrasyon_id,entegrasyon.evraktarihi, evrakturu.evrakturu, entegrasyon.evrakno, entegrasyon.aciklama,entegrasyon.doviz_id, entegrasyon.doviz,entegrasyon.borc, entegrasyon.alacak, abs(if (STRCMP(@cari_id,CariDetay.cari_id), func_SafBakiye(borc,alacak,1),func_SafBakiye(borc,alacak,0))) as Bakiye, @BA as BA,
abs(if (STRCMP(@cari_id,CariDetay.cari_id), entegrasyon.tip_id, entegrasyon.uygulanacakkur, entegrasyon.kullaniciadi, entegrasyon.ozelislemkodu1_id, entegrasyon.ozelislemkodu2_id, vadetarihi, @cari_id:=caridetay.cari_id from caridetay inner join entegrasyon force index (inxBakiyesiralama) On (caridetay.entegrasyon_id=entegrasyon.entegrasyon_id) left join geneldb.evrakturu On (entegrasyon.evrakturu_id=evrakturu.evrakturu_id) where (Entegrasyon.evraktarihi between '2005-1-1' and '2005-12-31') And (CariDetay.cari_id = '009')
second query is :
select cari_id, entegrasyon.entegrasyon_id,entegrasyon.evraktarihi, evrakturu.evrakturu, entegrasyon.evrakno, entegrasyon.aciklama,entegrasyon.doviz_id, entegrasyon.doviz,entegrasyon.borc, entegrasyon.alacak, abs(if (STRCMP(@cari_id,CariDetay.cari_id), func_SafBakiye(borc,alacak,1),func_SafBakiye(borc,alacak,0))) as Bakiye, @BA as BA,
abs(if (STRCMP(@cari_id,CariDetay.cari_id), entegrasyon.tip_id, entegrasyon.uygulanacakkur, entegrasyon.kullaniciadi, entegrasyon.ozelislemkodu1_id, entegrasyon.ozelislemkodu2_id, vadetarihi, @cari_id:=caridetay.cari_id from caridetay inner join entegrasyon force index (inxBakiyesiralama) On (caridetay.entegrasyon_id=entegrasyon.entegrasyon_id) left join geneldb.evrakturu On (entegrasyon.evrakturu_id=evrakturu.evrakturu_id) where (Entegrasyon.evraktarihi between '2005-1-1' and '2005-12-31') And (CariDetay.cari_id = '001')
union
select cari_id, entegrasyon.entegrasyon_id,entegrasyon.evraktarihi, evrakturu.evrakturu, entegrasyon.evrakno, entegrasyon.aciklama,entegrasyon.doviz_id, entegrasyon.doviz,entegrasyon.borc, entegrasyon.alacak, abs(if (STRCMP(@cari_id,CariDetay.cari_id), func_SafBakiye(borc,alacak,1),func_SafBakiye(borc,alacak,0))) as Bakiye, @BA as BA,
abs(if (STRCMP(@cari_id,CariDetay.cari_id), entegrasyon.tip_id, entegrasyon.uygulanacakkur, entegrasyon.kullaniciadi, entegrasyon.ozelislemkodu1_id, entegrasyon.ozelislemkodu2_id, vadetarihi, @cari_id:=caridetay.cari_id from caridetay inner join entegrasyon force index (inxBakiyesiralama) On (caridetay.entegrasyon_id=entegrasyon.entegrasyon_id) left join geneldb.evrakturu On (entegrasyon.evrakturu_id=evrakturu.evrakturu_id) where (Entegrasyon.evraktarihi between '2005-1-1' and '2005-12-31') And (CariDetay.cari_id = '009')
@BA is my user variable.
when i run first query, @BA variable field DataType is ftString,
when i run second query, @BA variable field DataType is ftMemo.
and delphi throw exception "type mismatch for field 'BA' expecting : Memo actual : string" or "type mismatch for field 'BA' expecting : String actual : Memo..."
@BA variable is char data... But when i run union query (second query)
is @BA variable datatype is or ...
what i do?
Thanks for ALL...