Announcement

Collapse
No announcement yet.

Teile von SQL Anweisungen aus einer Tabelle lesen

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

  • Teile von SQL Anweisungen aus einer Tabelle lesen

    Hi,

    das Problem ist fast zu trivial, aber ich komme damit einfach nicht weiter und es würde meine Applikation drastisch vereinfachen.

    Folgendes:
    in einer Tabelle TBL1 speichere ich in der Spalte Namen vom Typ varchar(255) z.B. den Text Vornahme || ' ' || NachName. Auf eine weitere Tabelle TBL2, die unter anderem die Spalten Vorname und Nachname enthält, führe ich nun die Anweisung

    select A.Spaltenliste from TBL1 A, TBL2 B where A.ID = '1'

    aus und das Ergebnis ist natürlich

    Vorname || ' ' || Nachname,

    weil die Spaltenliste der select Anweisung aufgelöst in '' steht, also

    select 'Vorname || ' ' || Nachname' from A, B where ID = '1'

    und nicht wie erwartet

    select Vorname || ' ' || Nachname from A, B where ID = '1'

    Wie kann man in SQL (nicht in Delphi) erreichen, das wirklich nur der reine Text abgebildet wird? Casting, InhaltOf, anderer Datentyp oder so etwas ähnliches?

  • #2
    Ich bin nicht ganz sicher, ob ich die Frage richtig verstehe. Auf jeden Fall kann man sich sie Syntax eines SELECT-Statement nicht mit einem eingelagerten SELECT zusammenbauen.

    Es sollte kein Problem sein, mit einem Client-Programm einen Inhalt wie "Vorname || ' ' || Nachname" aus einer Tabelle zu lesen, diesen Inhalt dann (ohne Quotes) in ein anderes Statement einzufügen und dieses zusammengebaute Statement wiederum auszuführen.

    Mit welchen Entwicklungswerkzeugen arbeitest Du?

    Gruss
    Karsten Strobe

    Comment


    • #3
      Ich arbeite mit Marathon und IBAccess und habe mir damit folgende procedure geschrieben:

      create procedure ZweiteZeile
      returns (RESULT varchar(255))
      as
      declare variable tmp varchar(31);
      BEGIN
      select Namen from TBL1 where ID = '1' into :tmp;
      for
      select :tmp from TBL2 into :RESULT
      do SUSPEND;
      END

      In der Spaltenliste der zweiten select Anweisung sollte:

      Vorname || ' ' || Nachname stehen, es steht aber offentsichtlich

      'Vorname || ' ' || Nachname' und somit ist die Ausgabe der procedure

      Vorname || ' ' || Nachname und nicht Nico Dostal.

      Ich bin auch davon überzeugt, das so etwas irgendwie möglich sein muß, aber wie? Bin über jeden Hinweis dankbar

      Comment


      • #4
        @nico,

        das geht nicht, bzw wird der Parameter :tmp immer als Konstante und nie als Feldname interpretiert. Das mußt du Clientseitig lösen und dein zweites SQL mit Textverarbeitung zusammenbauen

        Comment


        • #5
          Ich habe es nun nach viel herumstöbern auch eingesehen. Schade, es hätte mir die Arbeit sehr vereinfacht.

          Nochmals vielen Dank für Eure Kommentare

          Comment

          Working...
          X