Announcement

Collapse
No announcement yet.

Stored Procedure liefert Unterschiedliche Reihenfolge

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

  • Stored Procedure liefert Unterschiedliche Reihenfolge

    Guten Tag

    Ich soll gerade eine Oracle SP, die die Felder einer Tabellezurückliefert, soweit verbessern, dass das zurückgeliferte Resultset so sortiert ist wie auf der Datenbank. Problem dabei ist, ich habe die SP nicht geschrieben und habe auch nicht wirkliche Ahnung davon...

    Grundsätzlich nehme ich stark an, dass die Reihenfolge durch die Joins durcheinandergebracht wird.

    Code:
       Procedure get_fields (Inowner  IN VARCHAR,Intable IN VARCHAR,io_cursor IN OUT ida_cursor)
       IS 
       	v_cursor ida_cursor; 
       BEGIN
     
          OPEN v_cursor FOR 
    SELECT         zeilen.COLUMN_NAME, zeilen.DATA_TYPE, zeilen.DATA_LENGTH, com.COMMENTS, const.CONSTRAINT_TYPE
      FROM         (ALL_TAB_COLUMNS          zeilen
        LEFT JOIN  (ALL_CONS_COLUMNS         match
          JOIN     ALL_CONSTRAINTS           const
          ON       match.CONSTRAINT_NAME =   const.CONSTRAINT_NAME
          AND      const.TABLE_NAME      =   match.TABLE_NAME
          AND      const.OWNER           =   match.OWNER
          AND      const.CONSTRAINT_TYPE =   'P'
        )
        ON         zeilen.COLUMN_NAME    =   match.COLUMN_NAME
        ANd        zeilen.TABLE_NAME     =   match.TABLE_NAME
        AND        zeilen.OWNER          =   match.OWNER
        ) JOIN     ALL_COL_COMMENTS          com
        ON         com.COLUMN_NAME       =   zeilen.COLUMN_NAME
        AND        com.OWNER             =   zeilen.OWNER
        AND        com.TABLE_NAME        =   zeilen.TABLE_NAME
      WHERE       zeilen.TABLE_NAME      =   Intable
        AND       zeilen.OWNER           =   Inowner;
    
          io_cursor := v_cursor; 
       END get_fields;
    Wäre nett wenn mir jemand ein paar Ratschläge dazu geben könnte.

  • #2
    Originally posted by TheJoe View Post
    Guten Tag

    Ich soll gerade eine Oracle SP, die die Felder einer Tabellezurückliefert, soweit verbessern, dass das zurückgeliferte Resultset so sortiert ist wie auf der Datenbank. Problem dabei ist, ich habe die SP nicht geschrieben und habe auch nicht wirkliche Ahnung davon...

    Grundsätzlich nehme ich stark an, dass die Reihenfolge durch die Joins durcheinandergebracht wird.

    Wäre nett wenn mir jemand ein paar Ratschläge dazu geben könnte.
    Hallo,

    Du hast keine ORDER BY in deinem Statement. Ohne ORDER BY ist die Reihenfolge, welche zurückgebracht hat nicht vorauszusagen. Sortierung = ORDER BY, es gibt nicht so etwas wie eine "Sortierung wie in der Datenbank"


    Gruss

    Comment


    • #3
      Danke schonmal!

      Ich habe mich jetzt ein wenig gespielt und habe bemerkt, dass ALL_CONS_COLUMNS.Position laut Definition "Original position of column or attribute in the definition of the object" zurückgibt.

      Wäre es nicht möglich danach zu sortieren?

      Probiert habe ich die schon nur schreit er über einen Invalid Identifier (ORA-00904).

      mfg

      Comment


      • #4
        Originally posted by TheJoe View Post
        Probiert habe ich die schon nur schreit er über einen Invalid Identifier (ORA-00904).

        mfg
        Hallo,

        Poste doch mal deein Statement, welches den Fehler wirft

        Comment

        Working...
        X