Announcement

Collapse
No announcement yet.

SQL_Abfrage mit Parametern

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

  • SQL_Abfrage mit Parametern

    Hallo Community,

    ich habe eine spezielle SQL-Frage. Ich habe eine Datenbank mit Autos und deren PS-Zahlen (noch Spalten, aber diese interessieren im Moment nicht). ICh muss ein SQL-Skript schreiben, wo der User eine Eingabe machen kann und so alle Autos sich anzeigen lassen kann, bei der
    a) PS = 100, 105, 170 (also nur die drei PS-Zahlen)
    und
    b) PS=100-200 (also alle PS von 100 bis 200.

    Wie würden in etwa die Abfragen lauten für a) und b)??

    Danke

  • #2
    Hallo,

    ad a)
    [highlight=sql]
    SELECT *
    FROM #tmp
    WHERE PS IN (100, 105, 170)
    [/highlight]

    ad b)

    [highlight=sql]
    SELECT *
    FROM #tmp
    WHERE PS BETWEEN 100 AND 200
    [/highlight]

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Hallo,

      danke für deine Antwort. Habe mich wohl nicht deutlich genug ausgedrückt. Das ganze sind Parameter, die später ein Benutzer eingibt. Es müssen nicht die oben genannnten Zahlen sein, er kann also eingeben was er will... ich weiß also nicht was er eingibt...

      Comment


      • #4
        Ok, dann müssen Stored Procedures verwendet werden in denen die Parameter übergeben werden.

        ad a)
        [highlight=sql]
        CREATE PROCEDURE spPS @PS int
        AS
        SELECT *
        FROM tmp
        WHERE PS = @PS
        [/highlight]

        ad b)
        [highlight=sql]
        CREATE PROCEDURE spPSRange @PS1 int, @PS2 int
        AS
        SELECT *
        FROM tmp
        WHERE PS BETWEEN @PS1 AND @PS2
        [/highlight]

        Der Aufruf der Prozeduren erfolgt mit:
        [highlight=sql]
        EXEC spPS 100;
        EXEC spPSRange 100, 200
        [/highlight]

        Es könnten auch tabellenwertige Funktionen verwendet werden. Da ich aber nicht weiß ob Oracle (in dem du postest) dies unterstützt sind SPs die sicherere Variante.

        Mit einer tabellenwertigen Funktion sieht das so aus (zumindest im SQL Server)
        [highlight=sql]
        CREATE FUNCTION fnPSRange(@PS1 int, @PS2 int)
        RETURNS TABLE
        AS
        RETURN
        (
        SELECT *
        FROM tmp
        WHERE PS BETWEEN @PS1 AND @PS2
        );

        SELECT * FROM fnPSRange(100, 200)
        [/highlight]
        Zuletzt editiert von gfoidl; 06.07.2008, 23:37.
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment

        Working...
        X