zu viele werte für variable

  • #1
O

ofna

Mitglied
Themenersteller
Dabei seit
17.11.2005
Beiträge
6
Reaktionspunkte
0
hallo an alle!

mein bisheriges programm hat super funktioniert.......es hat eine id ausgelesen (und zwar genau die, die ich ihm mit dem übergabeparameter &1 übergeben habe)  und diese in die variable d gespeichert! diese variable konnte ich dann weiter unten in meiner nächsten select abfrage nutzen.....und fertig war die lösung............
zu diesem zeitpunkt gab es allerdings immer nur eine id für jeden namen, den ich übergeben habe!!!
z.b. 

FGG Lastprofil - 608088781
FGG Verrechnungsdaten - 608070551
usw

was jetzt umgebaut wurde ist:

Lastprofil Zaeler - 60605050
Lastpfofil FGG    - 60443033

das heißt wenn ich z.b Lastprofil% übergebe würde ich mehrere id's bekommen.........--> dann bekomme ich die fehlermeldung:
exact fetch returns more than requested number of rows
also funktioniert mein script so nicht mehr!!

es SOLLTE allerdings MÖGLICH SEIN beide id's zu speichern und weiter unten in der Abfrage diese dann auch beide verwenden zu können sodass ich in meiner zweiten abfrage auch 2 ergebnisse bekomme!!!!

wie kann ich mein programm abändern, das ich das hinbekomme?????

---------------------------------------------------------------------------
Code:
variable d char(255)

begin
select id into :d from action_mode where name like->&1%';
end;
/

select to_char(sysdate,'MMDDhhmiss') ||';'|| substr(to_char(id),8,2) ||';'||';'||';'||'1;'||';'||';' from action_mode where id = :d;

spool off
exit
 
  • #2
Hallo Ofna,
da brauchte man ein Array, um das Ergebnis der ersten Abfrage zu speichern, aber ich habe nicht gefunden, dass es so etwas unter PL/SQL gibt. Am einfachsten wäre es, das Ergebnis in einer temporären Tabelle zu speichern:
Code:
delete from tempid;
insert into tempid values (select id from action_mode where name like->&1%');
und hinterher mit der IN-Klausel auszuwerten, wie Du es früher schon getan hast:
Code:
select to_char(sysdate,'MMDDhhmiss') ||';'|| substr(to_char(id),8,2) ||';'||';'||';'||'1;'||';'||';' from action_mode where id in (select id from tempid);
Wahrscheinlich kann man beide Queries sogar zu einer zusammenfasse:
Code:
select to_char(sysdate,'MMDDhhmiss') ||';'|| substr(to_char(id),8,2) ||';'||';'||';'||'1;'||';'||';' from action_mode
 where id in (select id from action_mode where name like->&1%'));
... oder warum nicht ganz einfach:
Code:
select to_char(sysdate,'MMDDhhmiss') ||';'|| substr(to_char(id),8,2) ||';'||';'||';'||'1;'||';'||';' from action_mode
 where name like->&1%';
Viele Grüße - Ulrich
 
Thema:

zu viele werte für variable

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.836
Beiträge
707.957
Mitglieder
51.489
Neuestes Mitglied
DonMartin
Oben