Zum Inhalt springen

Tedi

Mitglieder
  • Gesamte Inhalte

    32
  • Benutzer seit

  • Letzter Besuch

Beiträge von Tedi

  1. Hallo,

    ich versuche wie folgt eine stored function in sqldev auszuführen, jedoch ohne Erfolg

    SET serveroutput on;
    
    declare
    r boolean
    r:= meine_fct(1212212,
                                        to_date('30.06.2022', 'dd.mm.yyyy'),
                                            'X',
                                            to_date('01.11.2018', 'dd.mm.yyyy'),
                                                 to_date('31.03.2023','dd.mm.yyyy'),
                                                 19,
                                                 'Y', 
                                               Outparam1,-- IN OUT Parameter
                                                 Outparam2,-- IN OUT Parameter
                                                 1,
                                                to_date('28.02.2023', 'dd.mm.yyyy'));
    
    dbms_output.enable;
      dbms_output.put_line(Outparam1);
      dbms_output.put_line(Outparam2);
    
    END; 
                                                

    leider erhalte ich für die Funktion keine Ausgabe. Das Einzige, was sqldev mir ausspuckt ist: PL/SQL-Prozedur erfolgreich abgeschlossen. 

    Ich hätte jedoch gerne eine Ausgabe gehabt um zu wissen ob die Funktion richtig berechnet.

    Die DBMS-Ausgabe ist an.

    Ich bedanke mich für jede Hilfe

  2. Hallo an Alle

    Ich hätte gern ein Tipp um besser zu selektieren.

    Ich habe die folgende Tabelle

     correspondance
    
    Article | Dept
    A1 | 123
    A1 | 456
    A1 | 987
    A2 |456
    B1 | 123
    B1 | 987
    C3| 123

     

    Ich möchte alle Artikel aus dept 123 ohne die aus dept 456 

    select * from correspondance where dept =  '123' and  dept !=  '456';

    ich dachte ich würde sowas bekommen
     

    Article | Dept
    
    B1 | 123
    C3 | 123

    stattdessen habe ich folgendes 
     

    Article | Dept
    A1 | 123
    B1 | 123
    C3| 123

    Den Select habe ich auch probiert ohne Erfolgt

    select * from correspondance where dept =  '123'  and article in(
    select article from correspondance where dept =  '123' or dept =  '456');

    Danke für eure Hilfe

  3. Hallo,

    Ich habe eine Kopie einer Tabelle von  meiner haupdb auf einer testdB erstellt

    create table TheCopy as (select * from MySource@hauptdb)

    Nun tue ich folgendes

    truncate table TheCopy
    insert into TheCopy select * from MySource@hauptdb

    Ich bekomme den Fehler

    ORA-00932:Inkonsistente Datentypen: NUMBER erwartet,DATE erhalten

    Was ich gar nicht verstehe, weil die Tabellen von der Struktur genau gleich sind.

     

    Ich bin für jede Hilfe oder Tipp dankbar. 

     

  4. Liebe Informatiker,

    Ich brauche euch bitte. Meine Funktion wirft mir über die Applikation folgende Fehler vor:

    Ora-06502: PL/SQL: numerischer oder Wertefehler: Zeichenfolgenpuffer zu klein.

    Wie kann ich die Funktion am sinnvollsten Debuggen um den Fehler zu lokalisieren.  Ich habe versucht einige Variable und DB-Felder zu vergrößern.  Leider ohne Erfolg. 

    Danke

     

  5. Hallo Zusammen!  Ich brauche bitte eure Hilfe. 

    Ich habe die  folgende Funktion

    
    create or replace function mafct(error out varchar2, mois_cmpt in varchar2, cercle in varchar2, typ in varchar2)
    RETURN BOOLEAN IS
     
    ptr number;
     
    BEGIN
    if typ  != 'M' or 
       typ  != 'E'
       then 
       Dbms_Output.Put_Line(typ );
     
    ptr:=ptr+1;
    insert into protocol values(' typ falsch '||typ ||' Bitte  M ou E eingeben',null,null,null,ptr);
    error:='typ falsch '||typ ||' bitte MBitte eingeben';
    commit;
       Dbms_Output.Put_Line(typ);
     
          return (FALSE);
    end if;
     
    return true
    END;

     Wenn ich die Funktion zum Testen aufrufe

    declare X boolean;
    error varchar2(255);
    begin
    X:=  mafct (error , '01.2025', 'AZ', 'E');
    end;

    Ich habe in meine Protokoll Tabelle einen Fehler, dass der Typ falsch wäre.

    Warum funktioniert den einfachen Vergleich nicht?

    Danke

     

  6. Hallo Whiz-zarD, erstmal danke für deine Antwort.  Du hast recht, meine Text War nicht so klar. Entschuldigung. 

    Die DB habe ich so übernommen und muss erstmal damit arbeiten. Zu dem  Insert into select bin ich schon son selber drauf gekommen wo ich einen Denkfehler habe ist wenn ich die richtigen Zeile auswählen muss und die anderen, die nicht aktualisiert werden müssen ausschließen. 

  7. Hallo ihr Lieben, 

    Ich habe (vielleicht eine doffe Frage ?) aber ich komme einfach nicht auf die Idee.

    Ich habe eine Tabelle mit 4 Spalten (darunter eine seq). 

    username|spezialitaet|id |doc_seq
    doc1    |Chirurg     |doc1_id| 1
    doc2    |Kardiologue |doc2_id| 2
    doc2    |Chirurg     |doc2_id| 3
    doc3    |internist   |doc3_id| 4
    doc4    |Chirurg     |doc4_id| 5

    Ich möchte alle doc, die Chirurg eine neue Zeile " Kardiologue" 

    verpassen sofern sie die Zeile noch nicht haben so wie doc_2.

    Die Spalte "doc_seq" ist eine ganz normale Sequenz. 

    Danke vielmals für eure Hilfe. 

  8. Lieber Whiz-zarD Danke!! 

    Ich habe inzwischen die meine ErgebnisMenge bekommen können.  

    Zum Einfügen habe ich mir eine Funktion geschrieben,  die leider noch nicht so tut was sie soll.

    ***** Korrektur:  ich hatte vorhin die Spalte in beiden Tabellen die Spalte seq vergessen. Daher nochmal die TabellenStruktur. ****

    create or replace function comp (p_error OUT VARCHAR2)
    RETURN BOOLEAN
    is
     
    cursor compa_cur is
     
    select * from compag_orcl1@orcl1 c1
     
    where c1.compag like 'C%'
       and not exists (select 1
                         from compag_orcl2 c2
                        where c1.username  = c2.username 
                          and c1.id   = c2.id
                          and c1.compag = c2.compag);
     
    compa_tmp compa_cur%ROWTYPE;
     
    begin
     
    open compa_cur ;
     
    loop
     
    fetch compa_cur into compa_tmp;
     exit when compa_cur%NOTFOUND;
     
    insert into compag_orcl2 (USERNAME, 
                         compag,  
                         id, 
                         Seq)
     
    values (compa_cur.username,
            compa_cur.compag,
             compa_cur.id,
            Seq_cmp.nextval);
        commit; 
     
       end loop;
     
            close compa_cur;
       return true; 
    end comp;
    compag_orcl1
     
    username | id | compag| seq
    --------------------------------------
    USER1     |us1id1| CMR| 123
    USER1     |us1id1| RWD| 456
    USER1     |us1id1| SING| 789
    USER1     |us1id1| CNG | 1011
    ------------------------------------
    USER2     |us2id2| SEN | 1213
    USER2     |us2id2| CND | 1415
    USER2     |us2id2| CGT | 1617
    USER2     |us2id2| CNG | 1819
    USER2     |us2id2| KPG | 2021
    ------------------------------------
    USER3     |us3id3| RWD| 2223
    USER3     |us3id3| CND | 2425
    USER3     |us3id3| CID  | 2627
    USER3     |us3id3| CNG | 2829
    USER3     |us3id3| SING| 3031

    und die Kopie auf orcl2

     

    compag_orcl2
    username | id | compag |seq
    -------------------------------------
    USER1     |us1id1| RWD|0010
    USER1     |us1id1| SING|0011
    USER1     |us1id1| CNG |0012
    ------------------------------------
    USER2     |us2id2| SEN|0013
    USER2     |us2id2| CNG|0014
    USER2     |us2id2| KPG|0015
    -----------------------------------
    USER3     |us3id3| RWD|0016
    USER3     |us3id3| CND|0017
    USER3     |us3id3| SING|0018
  9. vor 6 Minuten schrieb Whiz-zarD:

    Was meinst du mit "aggregierte Spalte"?
    Einzelne Spalten aggregieren kannst du nicht. Mir ist auch nicht klar, was du mit dem Decode() erreichen möchtest. Für mich sieht auch die Syntax komplett falsch aus.

    Die Spalte 'Sokat'. Ich multipliziere 'Einzahlung' mit decode ( plm. . ) danach trage ich die Summe in sokat 

  10. vor 11 Minuten schrieb Whiz-zarD:

     

    Wenn du Oracle verwendest, kannst du die extract()-Funktion benutzen, um das Jahr aus einem Datum zu extrahieren.
    https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions050.htm

    Dann lautet die Where-Klausel:

    
    WHERE EXTRACT(YEAR FROM ZEIT) = 2018

    Wie ich schon sagte, deine Where-Klausel ist nicht korrekt, wenn sie über das gesamte Jahr gesehen soll.

    Hast du überhaupt schon mal die Datensätze angeschaut, ob du überhaupt Datensätze vom 01.01.2018 bis 01.12.2018 hast?

    Danke. 

    Ich habe die Abfrage mit EXTRACT gemacht.  Die aggregierte Spalte ist immer noch null.

    Ja ich habe mir die DS. vom Jahr 2018 angeschaut.  Und die gibt es 

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...