Announcement

Collapse
No announcement yet.

SHOW FUNCTION STATUS in Oracle

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

  • SHOW FUNCTION STATUS in Oracle

    Hallo, habe noch eine weitere sache die ich für mein Script gebrauche. Und zwar möchte ich gucken ob die Funktion "get_parent" vorhanden ist.

    In mySQL mache ich das ganze so:
    PHP Code:
    $db4->queryStmt("SHOW FUNCTION STATUS");
    $check_for_get_parent $db4->fetchRow();    
    if(
    $check_for_get_parent["name"] == "get_parent") {}
    else { echo 
    "Die Funktion <b>get_parent</b> existiert nicht."; } 
    Wie mache ich das denn für mein Oracle Script?

  • #2
    Im Prinzip genauso wie Du es mit den Tabellen und Indizies gemacht hast.
    Dafür gibt es die View USER_PROCEDURES

    Dim
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

    Comment


    • #3
      Danke habs hinbekommen!

      Danke!!!!


      Jetzt muss ich die 3 Sachen nur noch in Eine Datei bekommen,

      kann ich am Anfang sagen:
      PHP Code:
      $db->queryStmt('SELECT table_name FROM USER_TABLES, USER_IND_COLUMNS'); 
      oder kommt es dann zu Problemen?
      Zuletzt editiert von Pillemon; 19.02.2009, 13:05.

      Comment


      • #4
        Originally posted by Pillemon View Post
        Danke habs hinbekommen!

        Danke!!!!


        Jetzt muss ich die 3 Sachen nur noch in Eine Datei bekommen,

        kann ich am Anfang sagen:
        PHP Code:
        $db->queryStmt('SELECT table_name FROM USER_TABLES, USER_IND_COLUMNS'); 
        oder kommt es dann zu Problemen?
        Hi,

        Habe zwar keine Ahnung von PHP, aber Oracle hat etwas gegen so eine Abfrage, also würde ich sagen, nein, geht nicht (Du erstellst damit ein kartesisches Produkt der beiden Tabellen...)
        (Im Grunde geht es schon, aber es ist nicht das, was du willst...:-)


        Gruss

        Comment


        • #5
          Hallo,
          Originally posted by Pillemon View Post
          ...SELECT table_name FROM USER_TABLES, USER_IND_COLUMNS...
          Diese Abfrage erzeugt ein kartesisches Produkt und ist nur möglich, wenn es die Spalte table_name nur in einer der beiden Tabellen gibt, was im konkreten Fall nicht gegeben ist.

          Die Abfrage wird also so nicht funktionieren!

          Evtl. hattest du ja eher sowas vor:
          [highlight=sql]
          select table_name FROM USER_TABLES
          UNION
          select table_name FROM USER_IND_COLUMNS
          [/highlight]

          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


          • #6
            Originally posted by Falk Prüfer View Post
            Hallo,


            Diese Abfrage erzeugt ein kartesisches Produkt und ist nur möglich, wenn es die Spalte table_name nur in einer der beiden Tabellen gibt, was im konkreten Fall nicht gegeben ist.

            Die Abfrage wird also so nicht funktionieren!

            Evtl. hattest du ja eher sowas vor:
            [highlight=sql]
            select table_name FROM USER_TABLES
            UNION
            select table_name FROM USER_IND_COLUMNS
            [/highlight]

            Gruß Falk
            Also so?

            PHP Code:
            $db->queryStmt('SELECT table_name FROM USER_TABLES UNION SELECT table_name FROM USER_IND_COLUMNS '); 

            Comment


            • #7
              Um die USER_TABLES den USER_IND_COLUMNS zuzuorden bietet sich eher ein JOIN über die gemeinsame Spalte table_name an:
              Code:
              SELECT * FROM USER_TABLES tab, USER_IND_COLUMNS ind
              WHERE tab.table_name=ind.table_name

              Comment


              • #8
                Originally posted by Pillemon View Post
                Also so?

                PHP Code:
                $db->queryStmt('SELECT table_name FROM USER_TABLES UNION SELECT table_name FROM USER_IND_COLUMNS '); 
                Zumindest den SQL-Teil hab ich so gepostet, ja.
                Aber ich weiß ja nicht was du vorhast und ob es das gewünschte Ergebnis bringt. Ich hab ja nur anhand deiner "unglücklich" formulierten Abfrage geraten was du evtl. vorhaben könntest.

                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


                • #9
                  Originally posted by jum View Post
                  Um die USER_TABLES den USER_IND_COLUMNS zuzuorden bietet sich eher ein JOIN über die gemeinsame Spalte table_name an:
                  Code:
                  SELECT * FROM USER_TABLES tab, USER_IND_COLUMNS ind
                  WHERE tab.table_name=ind.table_name
                  Diesen Error bekomme ich dann:
                  MDB2 Error: syntax error
                  [FROM USER_TABLES tab, USER_IND_COLUMNS ind]

                  _execute: [Error message: could not execute statement] [Last executed query: FROM USER_TABLES tab, USER_IND_COLUMNS ind] [Native code: 900] [Native message: ORA-00900: invalid SQL statement]


                  PHP Code:
                  $db->queryStmt('FROM USER_TABLES tab, USER_IND_COLUMNS ind');

                  while (
                  $row $db->fetchRow())
                  {
                      if(
                  strpos($row['table_name'],'$'))
                          continue;

                      
                  $db2->queryStmt('SELECT ' .
                              
                  'LOWER(table_name) as table_name, ' .
                              
                  'LOWER(column_name) as column_name, ' .
                              
                  'LOWER(data_type) as data_type, ' .
                              
                  'data_length, ' .
                              
                  'data_default, ' .
                              
                  'nullable ' .
                              
                  'FROM user_tab_columns ' .
                              
                  'WHERE tab.table_name=\'' $row['table_name'] . '\'');
                              
                      while (
                  $col $db2->fetchRow())
                      {    
                          
                  $table_array[$col['table_name']][$col['column_name']]['data_type'] = $col['data_type'];
                          
                  $table_array[$col['table_name']][$col['column_name']]['data_length'] = $col['data_length'];
                          
                  $table_array[$col['table_name']][$col['column_name']]['data_default'] = $col['data_default'];
                          
                  $table_array[$col['table_name']][$col['column_name']]['nullable'] = $col['nullable'];
                          
                      }

                          
                  $db3->queryStmt('SELECT ' 
                              
                  'LOWER(table_name) as table_name, ' .
                              
                  'LOWER(column_name) as column_name, ' .
                              
                  'index_name ' .
                              
                  'FROM USER_IND_COLUMNS  ' .
                              
                  'WHERE ind.table_name=\'' $row['table_name'] . '\'');

                      while(
                  $index $db3->fetchRow())
                      {
                          
                  $index_array[$index['table_name']][$index['column_name']]['index_name'] = $index['index_name'];
                      }

                  Oder hab ich das Falsch gemacht?

                  Comment


                  • #10
                    Originally posted by Pillemon View Post
                    ...
                    PHP Code:
                    $db->queryStmt('FROM USER_TABLES tab, USER_IND_COLUMNS ind');
                    ... 
                    Oder hab ich das Falsch gemacht?
                    Also der obige Inhalt von $db->queryStmt unterscheidet sich in zwei wesentlichen Punkten von:
                    Originally posted by jum View Post
                    ...
                    Code:
                    SELECT * FROM USER_TABLES tab, USER_IND_COLUMNS ind
                    WHERE tab.table_name=ind.table_name
                    Bei dir fehlt irgendwie der SELECT- und der WHERE-Teil.

                    Gruß Falk

                    P.S.: Du solltest mal etwas genauer die Antworten lesen und sauber deine Oracle-SQL- und PHP-Probleme voneinander trennen und nicht ständig tonnenweise PHP-Code im Oracle-Forum posten.
                    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


                    • #11
                      Hehe danke, das ganze klappt jetzt

                      Aber nun hab ich wieder nen Problem und zwar sagt der mir jetzt bei der Ausgbae z.B.
                      Attribut: index_name des Feld parent_id existiert nicht in categories
                      Der Wert cat des Attribut index_name (Tabelle: categories) entspricht nicht dem aktuellen Wert in der DB:

                      Dabei vergleiche ich garnicht ob das Feld parent_id in categories existiert sondern nur ob der index gesetzt ist.
                      Wenn ich die beiden Dateien von einander trenne funktioniert das aber zusammen nicht
                      Wer ne ahnung

                      Comment


                      • #12
                        Originally posted by Falk Prüfer View Post
                        ... Du solltest mal etwas genauer die Antworten lesen und sauber deine Oracle-SQL- und PHP-Probleme voneinander trennen...
                        Mehr kann ich dazu nicht sagen...
                        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


                        • #13
                          Originally posted by Pillemon View Post
                          Hehe danke, das ganze klappt jetzt

                          Aber nun hab ich wieder nen Problem und zwar sagt der mir jetzt bei der Ausgbae z.B.
                          Attribut: index_name des Feld parent_id existiert nicht in categories
                          Der Wert cat des Attribut index_name (Tabelle: categories) entspricht nicht dem aktuellen Wert in der DB:

                          Dabei vergleiche ich garnicht ob das Feld parent_id in categories existiert sondern nur ob der index gesetzt ist.
                          Wenn ich die beiden Dateien von einander trenne funktioniert das aber zusammen nicht
                          Wer ne ahnung

                          Hallo,

                          Bitte poste doch das (komplette) SQL, so wie es in der DB ausgeführt wird, nicht den PHP Code. Ausserdem wäre die Oracle Fehlermeldung (Wenn es dann eine ist) notwendig

                          Gruss

                          Comment

                          Working...
                          X