Announcement

Collapse
No announcement yet.

Mehre Datensätze in einem Kommando abschicken

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

  • Mehre Datensätze in einem Kommando abschicken

    Bei MySQL kann ich mit

    [highlight=SQL]insert into mytable(feld1) values('Wert1'), ('Wert2');[/highlight]

    mehrere Records in eine Tabelle eintragen. Beim Oracle habe ich nur folgendes gefunden:

    [highlight=SQL]begin
    insert into mytable(feld1) values('Wert1');
    insert into mytable(feld1) values('Wert2');
    end;[/highlight]

    Ist dies so korrekt oder gibts noch einen spezielle (besseren, schnelleren) INSERT-Modus? SP's sind keine Möglichkeit da unsere Anwendung mehrere DB's unterstützt und SP's vermeiden wollen.

    Prepared Statements und Parameter werden schon verwendet.

  • #2
    Hallo Bernhard,

    ein anderer Weg ist mir für ORACLE nicht bekannt. Hab eine konstruktivere Lösung auch schon oft vermisst.

    Wenn es darum geht nur eine SQL-Anweisung zu haben, dann fällt mir nur folgendes ein:
    [highlight=SQL]
    INSERT INTO mytable(feld1) (
    SELECT 'Wert1' FROM dual UNION
    SELECT 'Wert2' FROM dual
    );
    [/highlight]
    Der Schreibaufwand ist der gleiche, wenn nicht sogar höher.

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Stored Procedures vermeiden

      Hallo Bernhard,

      mich würde brennend interessieren, warum die Unterstützung von mehreren DBs den Einsatz von Stored Procedures verhindert.

      Falls es auf optimale Performance und Skalierbarkeit ankommt, ist eine Stored Procedure, die im Definer Mode kompiliert wurde, einem vom Client abgesetzten nativen SQL-Statement immer überlegen, da der größte Teil des Parsings bereits während der Kompilierung erfolgt.

      Siegfried

      Comment


      • #4
        Originally posted by SiegfriedEhlert View Post
        mich würde brennend interessieren, warum die Unterstützung von mehreren DBs den Einsatz von Stored Procedures verhindert.
        Der Aufwand sowas für alle unterstützten DB-Versionen (Oracle ab V8, MySQL ab V3.23, ...) so zu implementieren das die Flexibilität des Systems abgebildet wird.
        Der User kann für jede vorhandene Tabelle neue Spalten definieren und in bestimmten Rahmen (Plugins) sogar neue Tabellen definieren.

        Comment


        • #5
          Es geht auch per SQL:
          INSERT ALL INTO mytable (feld1) VALUES('Wert1')
          INTO mytable (feld1) VALUES('Wert2')
          SELECT * FROM dual;

          Und da geht noch mehr:
          http://download.oracle.com/docs/cd/B...4.htm#i2126076

          Comment

          Working...
          X