Hi,
So was könnte man z.B. mit einer SP machen.
SQL-Code:
create or alter procedure SP_DECODE_LIST (
ALIST DOM_MEMO,
ADELIMITER DOM_CHAR1)
returns (
ITEM DOM_VCHAR100)
AS
DECLARE VARIABLE I INTEGER;
begin
IF (ADelimiter is NULL) THEN
ADelimiter = ',';
ALIST = COALESCE(ALIST, '');
ITEM = NULL;
IF (CHAR_LENGTH(ALIST) > 0) THEN
BEGIN
WHILE (CHAR_LENGTH(ALIST) > 0) DO
BEGIN
I = POSITION(ADELIMITER IN ALIST);
IF (I = 0) THEN
I = CHAR_LENGTH(ALIST) +1;
ITEM = F_TRIM(LEFT(ALIST, I-1));
suspend;
ALIST = SUBSTRING(ALIST FROM I + 1 FOR CHAR_LENGTH(ALIST));
END
END ELSE
suspend; -- einmal NULL
end
die
Query würde dann so aussehen
SQL-Code:
select
L.ITEM,
R.*
from
SP_DECODE_LIST(:Menge, ',') L
join MyTable R on (R.ID = L.ITEM)
und im Delphi übergibst du die Liste dem Parameter als Commatext
Delphi-Quellcode:
MeineQuery.ParamByName('Menge').AsString := '222,223,224,225,226,227';
ps.
Vor dem Erstellen der SP müssen die Domains "DOM_MEMO" als Blob Typ 1 und "DOM_CHAR1 und "DOM_VCHAR100" wie der Name schon sagt definiert werden.
Oder halt direkt den Typ angeben.