2016-07-29 3 views
0

Bitte beachten Sie folgende VerfahrenWie Zufallszahl in einem Rutsch in SQL

begin 
for i in 0..99 
loop 
insert into cx_vf_Test_ids values (100+i,'STB','N'); 
end loop; 
commit; 
end; 

Es wird Einsatz 100 Werte sequentiell 100-199 und für jeden Wert ‚STB‘ und ‚N‘ bleibt gleiche einzufügen.

Meine Forderung ist zufällige Werte einfügen, die ich von meinem Team 101.187.193.138.189 ...... in diesem Fall zum Beispiel bekomme ich habe nur 100 Werte und STB und N werden gleich bleiben

Bitte geben Ihr Vorschlag.

+0

Dürfen Duplikate? – vercelli

+2

"zufällige Werte, die ich von meinem Team bekomme" - also wie sind sie zufällig? Und erhalten Sie immer noch alle 100 Werte (von 100 bis 199) in zufälliger Reihenfolge, was irrelevant ist, da die Datenbank sie nicht in der Reihenfolge speichert, in der sie eingefügt wurden? Oder wird es Zahlen außerhalb dieses Bereichs und/oder Lücken und Duplikate geben? –

+0

Ich habe 89441000300300020009,894410003003000200017,89441000300300020003, 89441000300300020012 so habe ich insgesamt 100 Nein, dass ich von meinem Team in einer Textdatei bekomme, so nur die Anzahl in Datei geschrieben muss ich nur diese und alle 2 Tage bekomme ich diese Datei enthält neue 100 Nummer und muss diese Datei erneut einfügen. Hast du irgendeine Lösung –

Antwort

0
create table temp 
(
num number(4), 
varc varchar(5), 
varc1 varchar (5)) 
; 
begin 
for i in 0..99 
loop 
insert into temp values (trunc(dbms_random.value(100,199)),'STB','N'); 
end loop; 
end; 

Ausgang: select * from temp;

109 STB N 
163 STB N 
169 STB N 
137 STB N 
145 STB N 
184 STB N 
107 STB N 

So müssen Sie etwas falsch gemacht. Es funktioniert perfekt in meinem SQLDev.

+0

Hallo Michal, Vielen Dank für Ihren Vorschlag, aber ich möchte numer einfügen, was ich jetzt mag 89441000300300020009,894410003003000200017,89441000300300020003 –

+1

Also waren Michals Zufallszahlen nicht die Zufallszahlen, nach denen Sie gesucht haben? Was bedeutet "wie 89441000300300020009,894410003003000200017,89441000300300020003"? Sobald Sie die Anforderung definiert haben, können wir den Teil "In einem Schritt in SQL" aufrufen. –

+0

Edits wurde gemacht –

0

Lassen Sie Ihr Team die "zufälligen" Werte in eine Tabelle einfügen und dann eine Insert-Auswahl treffen. Z.B. auf diese Weise:

create table so58a_t (num number); 

insert into so58a_t values (101); 
insert into so58a_t values (187); 
insert into so58a_t values (193); 
insert into so58a_t values (138); 
insert into so58a_t values (189); 

create table so58b_t (num number, foo varchar2(10), bar varchar2(10)); 

insert into so58b_t(num, foo, bar) 
select 
100 + num 
,'STB' 
,'N' 
from so58a_t; 

ergibt ein Ergebnis:

select * from so58b_t order by num; 

     NUM FOO  BAR 
---------- ---------- ---------- 
     201 STB  N 
     238 STB  N 
     287 STB  N 
     289 STB  N 
     293 STB  N 

Tabelle auch eine externe Tabelle sein kann.

+0

Ich habe 89441000300300020009,894410003003000200017,89441000300300020003, 89441000300300020012 so habe ich insgesamt 100 Nein, dass ich von meinem Team in einer Textdatei bekomme, so nur die Anzahl in der Datei geschrieben muss ich nur diese und alle 2 Tage einfügen Ich erhalte diese Datei mit der neuen 100-Nummer und muss diese Datei erneut einfügen. Hast du irgendeine Lösung –

+0

@RshiKant Ja habe ich. Die erste Option besteht darin, die Zahlenwerte aus einer Textdatei in eine Datenbanktabelle zu importieren (z. B. mit SQL Developer). In diesem Fall können Sie die obige Lösung anwenden. Die zweite Option ist _external table_ (verwenden Sie Ihre Google-Fu für die Details) beim Laden der Zahlen in die Datenbank. – user272735

+0

Bitte erklären Sie die zweite Option –

0

Beispiel eine Zufallszahl witout Dezimalstellen generieren:

DECLARE 
    N NUMBER; 
BEGIN 
    N := DBMS_RANDOM.VALUE(100, 199); 
    --Number without deimals 
    N := TRUNC(N, 0); 
    -- Print output on screen 
    DBMS_OUTPUT.PUT_LINE(N); 
END; 
/
+0

Ich habe 89441000300300020009,894410003003000200017,89441000300300020003, 89441000300300020012 so habe ich insgesamt 100 Nein, dass ich von meinem Team in einer Textdatei bekomme, so dass nur diese Anzahl in Datei geschrieben werden muss ich nur diese und alle 2 einfügen Tage bekomme ich diese Datei mit neuen 100 Nummer und muss diese Datei erneut einfügen. Hast du irgendeine Lösung? –

Verwandte Themen