PL/SQL Insert Random Datensatz

franky666

Grünschnabel
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:
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
 

Anhänge

  • fehler.JPG
    fehler.JPG
    15,4 KB · Aufrufe: 40
der Hinweis beantwortet nicht unbedingt die Frage, aber in 10g würde ich zum Erstellen eines Samples - nun ja - die Sample-Klausel verwenden:

SQL:
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.
 
Zuletzt bearbeitet von einem Moderator:
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
 

Neue Beiträge

Zurück