Aufruf von SELECT INTO

Generic1

Top Contributor
Hallo,

ich möchte in meiner Stored Procedure (für eine Oracle DB) ein:

s varchar2(200);
SELECT * INTO s FROM ZDEVICES;

machen, bekomme aber den Fehler

ERROR at line 7: PL/SQL: ORA-00947: Anzahl der Werte reicht nicht aus.

Mir ist schon klar, was der Fehler bedeutet (SELECT liefert mehrere Werte zurück), mir ist aber nicht klar, was ich da in der SP definieren muss als "s" damit mir das Ergebnis in "s" geschrieben wird.

Am liebsten wäre mir halt ein Array, wo in jedem Eintrag ein Ergebnis von Select steht.

Weiß jemand wie ich das am Besten machen kann?
lg
 

Michael...

Top Contributor
Ist beim mir schon eine Weile her, aber es müsste sowas wie ROWTYPE geben.
SQL:
s ZDEVICES%ROWTYPE;
Alternative könnte man aber auch einen Cursor verwenden.
 

Michael...

Top Contributor
Könntest Du vielleicht ein ganzen Beispiel geben?
Mir ist nicht klar wie das Oracle fressen könnte.
Naja so wie ich es halt geschrieben habe:
SQL:
s ZDEVICES%ROWTYPE;
SELECT * INTO s FROM ZDEVICES;
Wobei hier das Select Statement nur eine "Datenzeile" liefern darf, sonst gibt es glaube ich Probleme.

Ob Dir das weiter hilft, keine Ahnung. Dazu müsste man wissen was Du vorhast.
Wenn das Statement einen mehrzeiligen ResultSet zurückliefert musst Du direkt darüber iterieren oder das ganze mittels Cursor handeln.
 

Generic1

Top Contributor
Naja so wie ich es halt geschrieben habe:
SQL:
s ZDEVICES%ROWTYPE;
SELECT * INTO s FROM ZDEVICES;
Wobei hier das Select Statement nur eine "Datenzeile" liefern darf, sonst gibt es glaube ich Probleme.

Du hast recht, das SELECT darf nur ein Tupel zurückliefern, das bringt mich schon weiter aber wie du schon geschrieben hast, gibt bei mir das SELECT meherer TUPELS zurück.

Könntest du da ein Beispiel geben, wie man das mit einem CURSOR macht oder wie ich über das ResultSet drüberiterieren kann?
vielen Dank,
lg
 

Michael...

Top Contributor
Ohne Cursor sollte es so ähnlich funktioneren
SQL:
s ZDEVICES%ROWTYPE;
...
FOR s IN (SELECT * FROM ZDEVICES) LOOP
    DBMS_OUTPUT.PUTLINE(s.id);
END LOOP;
Sofern ZDevices eine Spalte namens ID besitzt wird über den ResultSet iteriert und für jeden Datensatz der Wert aus ID ausgegeben.
Für Cursor müsste ich selbst irgendwo nachschlagen oder im Internet suchen.
 

Generic1

Top Contributor
Ein Problem hab ich noch, ich habe einen ROWTYPE, der über mehrere Tabellen geht,
lässt sich das auch definieren?
Vielen Dank,
lg

Code:
SELECT Name, Version, UniqueDeviceID
FROM packages, collection, device_collection, devices
WHERE packages.ID = package_ID AND collection.ID = collection_ID AND device_ID = devices.ID
 

Michael...

Top Contributor
Das wiederrum geht z.B. mittels Cursor
SQL:
CURSOR mycursor IS SELECT Name, Version, UniqueDeviceID
FROM packages, collection, device_collection, devices
WHERE packages.ID = package_ID AND collection.ID...;

myvariable mycursor%ROWTYPE;
...
Man kann dann per FETCH und LOOP den Cursor auslesen, muss diesen aber vorher per OPEN initialisieren.

Ist bei mir aber wie gesagt schon eine Weile her. Aber im Netz sollten sich einige Bsp finden lassen.
 
G

Gast2

Gast
Kann man auch ohne OPEN, in einer FOR Schleife, dann wird halt der gesammte Cursor Inhalt durchlaufen.

SQL:
DECLARE
  CURSOR mycursor IS SELECT Name, Version, UniqueDeviceID
  FROM packages, collection, device_collection, devices 
  WHERE packages.ID = package_ID AND collection.ID...;
 
  myvariable mycursor%ROWTYPE;
BEGIN

  FOR myvariable IN mycursor LOOP
  -- do something
  END LOOP;
END;
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N SQLite Hibernate und Aufruf von Funktion SELECT last_insert_rowid() Datenbankprogrammierung 2
K HSQLDB .sql Script Aufruf über Java Datenbankprogrammierung 7
1 Aufruf einer View über Java Gui Datenbankprogrammierung 5
N Probleme beim Aufruf aus der DB Datenbankprogrammierung 7
C Stored Procedure - Aufruf mit call Datenbankprogrammierung 4
B MySQL Stored Procedure Aufruf funktioniert nicht Datenbankprogrammierung 4
H MIt oracle Verbinden (ungültiges Argument in Aufruf) Datenbankprogrammierung 4
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
OnDemand Select * from bringt keine Rückgabe Datenbankprogrammierung 49
OnDemand Select vs Update ins blaue, was ist teurer? Datenbankprogrammierung 11
M JPA: select all mit unterschiedlichem Tablename Datenbankprogrammierung 2
A MySQL Select und Insert in Java Datenbankprogrammierung 15
J JPA: Wie sieht der select aus? Datenbankprogrammierung 2
D geänderte SELECT Abfragen Datenbankprogrammierung 15
T sqlite select Datenbankprogrammierung 12
D Oracle NullPointerException bei select mit Null Values Datenbankprogrammierung 5
F MySQL Was bedeuten die Einzelnen Zeichen in Select Querrys? Datenbankprogrammierung 1
J SQL SELECT mit einem Array Datenbankprogrammierung 1
J SELECT Abfrage/Suche Datenbankprogrammierung 4
E Kann man in einer if-Bedingung auch SELECT-Statements überprüfen? Datenbankprogrammierung 23
M SQL-Exception trotz funktionierendem SELECT Datenbankprogrammierung 4
U PostgreSQL SELECT Statement Datenbankprogrammierung 5
L Select Anweisung wird falsch interpretiert Datenbankprogrammierung 3
C HSQLDB Platzhalter in SELECT Datenbankprogrammierung 6
I SELECT bei Datenbankverbindung Datenbankprogrammierung 6
C MySQL JPA - namedQuery (SELECT) -getResultList() - liefert falsches Ergebnis Datenbankprogrammierung 1
S select: alle ergebnisse ermitteln Datenbankprogrammierung 5
G SQLite SQLite Select für View vereinfachen/optimieren Datenbankprogrammierung 4
C SQL-Statement SELECT über 3 Tabellen Datenbankprogrammierung 5
H HSQLDB insert .... values("test1",select test2 from foo) Datenbankprogrammierung 2
D JDBC insert mit select abfrage Datenbankprogrammierung 5
W SELECT oder Programm-Logik Datenbankprogrammierung 10
J Hibernate Select auf Parameterliste Datenbankprogrammierung 3
T MySQL Dynamisch Suchen Select Datenbankprogrammierung 4
D ArrayList in Select Datenbankprogrammierung 12
N Select mit join Datenbankprogrammierung 3
F Oracle select sum() join select sum() Datenbankprogrammierung 9
B SELECT ja - INSERT nein (MySQL) Datenbankprogrammierung 3
R Oracle Performance bei SELECT mit vielen Reihen Datenbankprogrammierung 5
T MySQL Db select * und Insert schlagen fehl Datenbankprogrammierung 2
I Select-Statement optimieren Datenbankprogrammierung 14
M Variable in SQL SELECT * FROM ... WHERE mithilfe von PreparedStatement benutzen? Datenbankprogrammierung 28
R Derby/JavaDB Möglichkeit von einem Random Select! Datenbankprogrammierung 6
B Mehrfachschachtelung SELECT Datenbankprogrammierung 2
T MySQL Select: Zusammenfassen von Daten und bilden von Durchschnitt? Datenbankprogrammierung 4
GianaSisters MySQL Datenbank Select error Datenbankprogrammierung 5
R Select Statement als temporärer Table Datenbankprogrammierung 7
R Derby/JavaDB Select Statement Where bedingung will nicht ganz! Datenbankprogrammierung 4
R Derby/JavaDB Select TOP Statement geht nicht Datenbankprogrammierung 3
S MySQL Problem mit SELECT bzw encoding Datenbankprogrammierung 4
B HSQLDB Probleme mit Select...Where Abfrage Datenbankprogrammierung 16
F wie funktioniert if Statement in SELECT? Datenbankprogrammierung 2
J [Hibernate] Select Statement Datenbankprogrammierung 4
A SQLite SELECT von ungleichen Spaltenpaaren Datenbankprogrammierung 10
Eldorado MySQL SELECT mit GROUP BY und INNER JOIN Datenbankprogrammierung 2
M Hibernate JPQL SELECT optional? Datenbankprogrammierung 2
C Datenbank-Abfrage, if im Select Datenbankprogrammierung 9
B H2 PreparedStatement SELECT * FROM ? Datenbankprogrammierung 4
X Select Query auf Substring Datenbankprogrammierung 2
S Select eines bestimmten Datensatzes Datenbankprogrammierung 4
M Select * from mydaten where ... Datenbankprogrammierung 4
T Unerwartete Datenbankausgabe bei "select now()" (es wird ein .0 angehängt) Datenbankprogrammierung 5
M Probleme bei Select in Schleife Datenbankprogrammierung 7
G SELECT liefert leere Zeilen Datenbankprogrammierung 32
M SELECT longtext -> als String behandeln Datenbankprogrammierung 6
H Select in einem Select Datenbankprogrammierung 7
G Select- Abfrage Datenbankprogrammierung 19
S Insert mit Select Datenbankprogrammierung 6
G MSSQL Server SELECT Abfrage funktioniert nicht Datenbankprogrammierung 4
R SELECT aus hsqldb mit Parameter Datenbankprogrammierung 2
H Beim insert bekomme ich den Fehler missing select keyword Datenbankprogrammierung 2
A Problem mit einem Select-Befehl Datenbankprogrammierung 5
E Neues select auf ein vorhandenes Resultset Datenbankprogrammierung 11
A SELECT-Anweisung liefert keine Datensätze zurück Datenbankprogrammierung 9
S Select über mehrere Datenbanksysteme Datenbankprogrammierung 14
P SELECT Datenbankprogrammierung 20
T select Abfrage in Java Integer speichern ? Datenbankprogrammierung 2
B fehler bei select befehl Datenbankprogrammierung 5
S Select von bis in DB2 Datenbankprogrammierung 8
S Select mit PreparedStatement Datenbankprogrammierung 2
E Ein If und ein SELECT in Oracle? Datenbankprogrammierung 2
T Select Statement auf Relation Datenbankprogrammierung 3
S PostgreSQL SELECT/UPDATE etc. Datenbankprogrammierung 4
4 Probleme mit Select abfrage Datenbankprogrammierung 4
G Fehler in der select-Abfrage Datenbankprogrammierung 3
N SELECT: Datensatz sperren Datenbankprogrammierung 6
isowiz SELECT SUM() Ergebnis in Java abfragen Datenbankprogrammierung 6
T LIMIT In SELECT Anweisung Datenbankprogrammierung 4
R Select und Insert in Schleife - Problem mit ResultSet Datenbankprogrammierung 2
G SELECT Name= " " verhindern Datenbankprogrammierung 5
G Syntax für Select - Abfrage mit Variablen Datenbankprogrammierung 39
J SELECT-Statement Datenbankprogrammierung 4
R Select auf der Konsole ausgeben Datenbankprogrammierung 2
D brauche mal kurz hilfe bei einem select-stmt Datenbankprogrammierung 6
G Select-Abfragen sind sehr langsam Datenbankprogrammierung 7
D HSQLSB SELECT Datenbankprogrammierung 9

Ähnliche Java Themen

Neue Themen


Oben