Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Prozedur mit Tabellenausgabe

Dieses Thema im Forum "Oracle" wurde erstellt von Xbody, 4 Dezember 2012.

  1. Xbody

    Xbody Benutzer

    Code:
    CREATE OR REPLACE PROCEDURE LibertyCity(X CHAR) AS
      BEGIN
        IF X LIKE 'la' THEN
            (Select S.Name
            from City S, Country C
            where S.Country = C.Code and C.Code = 'la';)
        IF X LIKE 'tu' THEN
            (Select S.Name
            from City S, Country C
            where S.Country = C.Code and C.Code = 'tu';)
      END;
        
    Ich hoffe man versteht, was ich tun möchte,
    ich weiß bloß nicht wie.
    Verwende Oracle SQL Developer.

    Da kommt ein Fehler
    Code:
    Error(4,10): PLS-00103: Encountered the symbol "SELECT" when expecting one of the following:    ( - + case mod new not null <an identifier>    <a double-quoted delimited-identifier> <a bind variable>    continue avg count current exists max min prior sql stddev    sum variance execute forall merge time timestamp interval    date <a string literal with character set specification>    <a number> <a single-quoted SQL string> pipe    <an alternatively-quoted string literal with character set specification>    <an alternat
    
     
  2. Xbody

    Xbody Benutzer

    Fertig! Hab bloß noch eine Tabelle
    BLABLA
    erstellt in die ich einfüge.

    Code:
    CREATE OR REPLACE PROCEDURE LibertyCity(X CHAR) AS
      BEGIN
        IF X = 'la' THEN
          INSERT INTO BLABLA
            Select S.*
            from City S, Country C
            where S.Country = C.Code and C.Code = 'la';
        END IF;
        IF X = 'tu' THEN
          INSERT INTO BLABLA
            Select S.*
            from City S, Country C
            where S.Country = C.Code and C.Code = 'tu';
        END IF;
      END;
     
  3. ukulele

    ukulele Datenbank-Guru

    Ich bin jetzt nicht so fit in Oracle aber ich denke da gibt es Verbesserungspotenzial. Zum einen kannst du bei mehreren IF Abfragen auch gut eine CASE Schleife verwenden, etwa so:
    Code:
    CREATE OR REPLACE PROCEDURE LibertyCity(X CHAR) AS
      BEGIN
        ( CASE
        WHEN    X = 'la' THEN
          INSERT INTO BLABLA
            Select S.*
            from City S, Country C
            where S.Country = C.Code and C.Code = 'la'
        WHEN    X = 'la' THEN
          INSERT INTO BLABLA
            Select S.*
            from City S, Country C
            where S.Country = C.Code and C.Code = 'tu'
        END )
      END;
    Zum Anderen kannst du auch alles in einem Select durchführen, da braucht es kein IF oder CASE.
    Code:
    CREATE OR REPLACE PROCEDURE LibertyCity(X CHAR) AS
      BEGIN
          INSERT INTO BLABLA
            Select S.*
            from City S, Country C
            where S.Country = C.Code and C.Code = X
      END;
    Natürlich nur wenn es sich wirklich so simpel verhält.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden