tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
928
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    franky666 franky666 ist offline Grünschnabel
    Registriert seit
    Jul 2007
    Beiträge
    2
    Hallo an alle,
    ich bin gerade dabei PL/SQL zu lernen und bekomme leider eine Prozedur nicht hin. Ich hoffe, dass ihr mir etwas helfen könnt.

    Kurze Beschreibung zu der Prozedur:

    Die Prozedur soll aus einer Tabelle (Artikel) einen Zufälligen Datensatz wählen und diesen in eine andere Tabelle schreiben. Dabei soll es durch einen Parameter die Menge der Datensätze festgelegt werden. Die verwendete Datenbank ist eine Oracle 10g XE

    Prozedur:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    create or replace
    PROCEDURE PROC_AUSWAHL (p_ende IN integer) AS
    v_artikel varchar2(1000);
    BEGIN
    FOR x IN 1 .. p_ende LOOP
    SELECT bezeichnung into v_artikel FROM (SELECT bezeichnung FROM dg_artikel ORDER BY dbms_random.value) WHERE rownum = 1;
    INSERT INTO st_artikel (id, bezeichnung) values (seq_st_artikel.nextval, v_artikel);
    END LOOP;
    END PROC_AUSWAHL;

    Es kommt die folgende Fehlermeldung (siehe Bild):


    Ich vermute, dass es an der Variablen liegt. Die Select Abfrage selber ohne die Variable funktioniert richtig. Ich hoffe, dass hier jemand einen Hinweis geben kann.

    Danke und viele Grüße
    Frank
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken PL/SQL Insert Random Datensatz-fehler.jpg  
     

  2. #2
    MPr MPr ist offline Mitglied Silber
    Registriert seit
    Oct 2006
    Ort
    Saarbrücken
    Beiträge
    82
    der Hinweis beantwortet nicht unbedingt die Frage, aber in 10g würde ich zum Erstellen eines Samples - nun ja - die Sample-Klausel verwenden:

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    SQL> SELECT COUNT(*) FROM obj$;
     
      COUNT(*)
    ----------
         13631
     
    SQL> SELECT COUNT(*) FROM obj$ sample(1);
     
      COUNT(*)
    ----------
           148

    Gruß

    MP

    P.S.: ein grundsätzliches Syntax-Problem sehe ich bei der Prozedur nicht - über sqlplus sollte sie fehlerfrei erzeugt werden.
    Geändert von MPr (24.07.07 um 21:11 Uhr)
     

  3. #3
    franky666 franky666 ist offline Grünschnabel
    Registriert seit
    Jul 2007
    Beiträge
    2
    Hallo MPr,
    du hast recht. In SQL Plus läuft die Prozedur durch. Das liegt wohl an diesem SQL Developer. Ich danke dir für die schnelle Hilfe und ebenfalls danke für den Hinweis mit der Sample-Klausel.

    Viele Grüße
    Frank
     

Ähnliche Themen

  1. Random ohne import / Random-Alternative
    Von Syrill im Forum Java
    Antworten: 4
    Letzter Beitrag: 03.11.10, 08:06
  2. INSERT aber nur wenn Datensatz noch nicht vorhanden ist.
    Von mafin im Forum Relationale Datenbanksysteme
    Antworten: 6
    Letzter Beitrag: 17.12.08, 10:41
  3. INSERT OR UPDATE - Wie Datensatz überschrieben?
    Von isowit im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 23.06.06, 23:21
  4. Ungewollter Datensatz bei INSERT INTO
    Von ElFunghi im Forum PHP
    Antworten: 1
    Letzter Beitrag: 25.05.05, 03:09
  5. INSERT schreibt doppelten Datensatz!?
    Von magic_halli im Forum Relationale Datenbanksysteme
    Antworten: 6
    Letzter Beitrag: 23.08.03, 14:51