Announcement

Collapse
No announcement yet.

Wie kann ich den Spaltennamen als Variable an eine Stored procedure übergeben ?

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

  • Wie kann ich den Spaltennamen als Variable an eine Stored procedure übergeben ?

    Hallo Leute,
    in einer SQL-Tabelle "Meldungen" sind Texte in verschiedenen Sprachen abgelegt.

    ID Sp1 Sp2 Sp3
    1 Deutscher Text Englischer Text Französisch

    usw.

    im Moment habe ich eine Stored Procedure folgendermassen:

    Create Procedure "sp_Meldung" (Nr Int)
    begin
    select * from Meldungen
    where ID=Nr;
    end

    das funktioniert ohne Probleme.
    Allerdings bekomme ich ja immer alle Spalten zurück geliefert, was ich aus Performencegründen nicht möchte.

    Gerne hätte ich noch einen weiteren Parameter übergeben (SpID int)
    wo ich der Procedure sagen möchte, wenn SpID=1
    dann soll er nur die Spalte Sp1 lesen und zurück geben.
    Irgendwie bekomme ich das nicht hin und stehe ein bisschen auf dem Schlauch, da meine Kentnisse ich SQL auch nicht so üppig sind.
    HAbt Ihr vielleicht eine gute Idee?

    Danke
    Gerhard

  • #2
    Entweder
    Du baust anhand des neuen Parameters ein
    If Then Else Konstrukt
    in die SP, das dann verschiedene Statements absetzt, die jeweils nur die gewünschte Spalte selectieren

    oder
    Du machst diese Auswahl im SQL selbst
    [highlight=SQL]
    select irgendwas,
    CASE SpID
    WHEN 1 THEN column1
    WHEN 2 THEN column2
    [ELSE 'Fehler: unbekannte Spalte in Sprachauswahl Parameterwert:'||SpID]
    END CASE as AusgabeSpalte
    from Meldungen ...
    [/highlight]
    Gruß, defo

    Comment


    • #3
      Danke für den Tip defo
      Jetzt sind die Procedure so aus:

      CREATE PROCEDURE `sp_Meldung`(Nr bigint, SpID bigint)
      begin
      select id,case (SpID) when 1 then Sp1
      when 2 then Sp2
      when 3 then Sp3
      when 4 then Sp4
      when 5 then Sp5
      end
      from Meldungen
      where Id=Nr;
      end
      und funktioniert einwandfrei.

      Besten Dank...

      Comment


      • #4
        Prima, ich würde Dir aber schon empfehlen, im Else Case eine Meldung auszugeben.
        Dann suchst Du nicht so lange, wenn Du mit einer undefinierten ID reingehst. Sieht vielleicht häßlich aus, wenn irgendwo der Text in einer Anwendung erscheint, aber es spart vermutlich Sucharbeit oder schlimmeres (auf Dauer)
        Gruß, defo

        Comment


        • #5
          Die anschließende Diskussion war etwas groß, deswegen habe ich sie auf Wunsch in ein neues Thema verschoben:

          http://entwickler-forum.de/showthrea...ored-Procedure

          Comment


          • #6
            Da hast Du recht defo,
            habe ich auch noch nachträglich gemacht.

            Comment

            Working...
            X