Announcement

Collapse
No announcement yet.

FB1.5 - stored proc soll Stringliste auswerten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • FB1.5 - stored proc soll Stringliste auswerten

    Ich habe in einer Delphi Applikation immer einen Satz von Artikel-Nummern in einer Tabelle zu suchen. Diese Nummern stehen in einer Stringliste (von 1 bis max. ca. 60 Art.Nr.). Die Delphi App ruft dann für jeden der Einträge eine Stored Proc auf, welche prüft, ob diese Art.Nr. existiert (und lieferte den PK zurück).
    Diese Schleife möchte ich auf den Server "auslagern".
    Dazu brauche ich aber gescheite String-Verarbeitungsfunktionen in der Stored Procedure, welche den Übergebenen String, welcher CR/LF oder ein sonstiges Trennzeichen enthält, schnell und effizient in Brocken zerlegt, über die man dann eine Schleife laufen lassen kann.
    Gibt's da irgendwo schon eine Muster-Stored Proc, bei der ich das mal analysieren kann?
    Oder eine UDF (für Win UND Linux), welche das unterstützt?

  • #2
    Das verwenden wir zum Zerschnippeln von Strings:

    CREATE PROCEDURE P_SPLIT_STR (
    SEP VARCHAR(20),
    STR VARCHAR(2048))
    RETURNS (
    HEAD VARCHAR(2048),
    TAIL VARCHAR(2048))
    AS
    begin
    head = '';
    tail = '';
    if ((not sep is null) and (strlen(sep) > 0)) then
    begin
    while (str > '') do
    if (str starting with sep) then
    begin
    tail = SUBSTRLEN (str , strlen(sep)+1 , 2047-strlen(sep));
    str = '';
    end
    else
    begin
    head = head || substring(str from 1 for 1);
    str = substring(str from 2 for 2047);
    end
    end
    suspend;
    END

    Fran
    "Fascinating creatures, phoenixes, they can carry immensely heavy loads,
    their tears have healing powers and they make highly faithful pets."
    - J.K. Rowling

    Comment


    • #3
      Hallo motions,<p>
      Woher bekommst du die 60 Artieklnummern ?.
      Kannst du das "Ermittle Artikelnummern" nicht auch in die SP auslagern ?
      <p>
      Heik

      Comment


      • #4
        @Frank,
        danke für den Programmschnippsel. Damit werde ich mal starten ...

        @Heiko,
        Die Logik zur Generierung der Liste ist leider noch komplexer, muss in Zukunft eventuell häufiger erweitert werden. Dort sehe ich auch keinen Performance-Vorteil, weil diese Liste durch verschiedene Algorithmen erstellt wird (also ohne DB Zugriffe) und auf Clients wie Server gleich schnell laufen sollte. Als Maschinencode compilat auf dem Client wahrscheinlich schneller.
        Außerdem sind die verschiedenen Algorithmen verschachtelt und hintereinandergeschaltet. Die einzelnen Algorithmen lassen sich vom Anwender außerdem einzelen aktivieren/deaktivieren. Das alles zum Server durchzuschleusen ist viel zu aufwendig. Teilweise muss ich auch reguläre Ausdrücke zur Listengenerierung anwenden und das wird dann wohl wirklich grob auf eine Stored Proc anzuwenden (sofern man ohne UDF arbeiten will)

        Comment

        Working...
        X