Sie sind nicht angemeldet.

Justus

Junior Schreiberling

  • »Justus« ist männlich
  • »Justus« ist der Autor dieses Themas

Beiträge: 152

Registrierungsdatum: 16.10.2004

Beruf: ich will auch mal Käptain sein!

1

06.06.2006, 18:46

Sql 7

Hi


Ich hab da ein Problem. Ich möchte einer Variablen einen wert aus einer sql Abfrage zuweisen.

variable := (SELECT max(spalte) FROM tabelle);

Durch das max ist ja sichergestellt das nur ein wert zurückgewiesen wird. Das müste doch gehen, oder? Ich bekomm aber die Fehlermeldung:

ERROR at line 7:
ORA-06550: line 7, column 12:
PLS-00103: Encountered the symbol "SELECT" when expecting one of the following:
( - + case mod new not null others <an identifier>
<a double-quoted delimited-identifier> <a bind variable> avg
count current exists max min prior sql stddev sum variance
execute forall merge time timestamp interval date
<a string literal with character set specification>
<a number> <a single-quoted SQL string> pipe
<an alternatively-quoted string literal with character set specification>
<an alternativ
ORA-06550: line 7, column 40:
PLS-00103: Encountered the symbol ")" when expecting one of the following:
. , @ ; for <an identifier>
<a double-quoted delimited-identifier> group having intersect
minus order partition start subpartition union where connect
ORA-06550: line 14, column 0:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:
;
Elapsed: 00:00:00.01

XAX

Junior Schreiberling

  • »XAX« ist männlich

Beiträge: 207

Registrierungsdatum: 25.12.2004

2

06.06.2006, 19:19

SELECT max(spalte) into variable FROM tabelle;

XAX

Junior Schreiberling

  • »XAX« ist männlich

Beiträge: 207

Registrierungsdatum: 25.12.2004

3

07.06.2006, 13:00

3a)
An der Stelle an der ich LAST_SUCESSORS rekursiv aufrufe bekomme ich folgenden Fehler:

15/5 PL/SQL: Statement ignored
15/5 PLS-00201: identifier 'LAST_SUCESSORS' must be declared

Wurde zum Thema Rekursion irgendwas in der Volresung gesagt?

Bei Squiggle bekomme ich jetzt immer ALLE Fehler angezeigt die in der user_errors Tabelle stehen, wie kann ich das abstellen.
Mit SQL*Plus zu arbeiten ist extrem nervig wenn man städnig show errors aufrufen muss.

masjanja

Praktikant

  • »masjanja« ist weiblich

Beiträge: 4

Registrierungsdatum: 27.05.2006

4

07.06.2006, 22:25

In SQL-PLUS kannst du so schreiben:
deine Funktion
.
.
.
end;
/
show errors;

Dann siehst du die Funktion und die Fehler gleichzeitig. =)

XAX

Junior Schreiberling

  • »XAX« ist männlich

Beiträge: 207

Registrierungsdatum: 25.12.2004

5

07.06.2006, 23:05

Danke, das machts wenigstens etwas komfortabler.
Bin aber immer noch an einer Lösung für Squiggle interessiert.

CrissCross

Erfahrener Schreiberling

  • »CrissCross« ist männlich

Beiträge: 282

Registrierungsdatum: 15.02.2005

6

08.06.2006, 08:57

CPU-Problem bei Abfrage aus Aufgabe 2b?

Ich bekomme bei Aufgabe 2 b immer folgende Meldung:

jobs(person)='writer/actor'
*

ERROR at line 7:
ORA-02393: exceeded call limit on CPU usage
..

Die Funktion "jobs" funktioniert an sich gut. In der Funktion hole ich über ne Abfrage die gesuchten Jobs und verarbeite dann den Cursor-Inhalt in einer Schleife, indem ich einen String aus den Jobs aufbaue.

Hat jemand ne Idee wo der Fehler liegen könnte?
"Technology is easy - people are hard."

(John Gage - Sun Microsystems zum Thema warum IT-Projekte scheitern)

  • »Joachim« ist männlich

Beiträge: 2 863

Registrierungsdatum: 11.12.2001

Wohnort: Hämelerwald

Beruf: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

7

08.06.2006, 11:29

RE: CPU-Problem bei Abfrage aus Aufgabe 2b?

Zitat

Original von CrissCross
ERROR at line 7:
ORA-02393: exceeded call limit on CPU usage
Die Fehlermeldung besagt, daß Du mehr CPU-Zeit für diese Anfrage/Berechnung brauchst als Dir laut Deinem Benutzerprofil (das nur der Administrator ändern kann) zusteht.

Also: Algorithmus optimieren. :)
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Joachim« (08.06.2006, 11:29)


CrissCross

Erfahrener Schreiberling

  • »CrissCross« ist männlich

Beiträge: 282

Registrierungsdatum: 15.02.2005

8

08.06.2006, 12:12

Zitat

Also: Algorithmus optimieren.


Jep, genau da lag auch das Problem. Ich hatte einen Sub-Select in der Funktion "jobs" benutzt, was bereits ohne Schleife zu einer Ausführungszeit von knapp 50 sec. führt - mit Schleife wurde natürlich die CPU-Zeit bei weitem überschritten :)
"Technology is easy - people are hard."

(John Gage - Sun Microsystems zum Thema warum IT-Projekte scheitern)

Jim Rakete

Trainee

  • »Jim Rakete« ist männlich

Beiträge: 50

Registrierungsdatum: 04.06.2005

Beruf: Mathe/Informatik

9

09.06.2006, 10:49

Gibt es in SQL ein Kommando für Zeilenumbrüche, so daß ich für
BEGIN
DBMS_OUTPUT.PUT_LINE('Zeile 1' || 'Zeile 2');
END;
statt "Zeile 1Zeile 2" als Ausgabe
"Zeile 1
Zeile 2"
bekomme? Dann würde das Ergebnis von Aufgabe 3 b) natürlich netter aussehen..

Jojo

Trainee

  • »Jojo« ist männlich

Beiträge: 94

Registrierungsdatum: 16.11.2005

Wohnort: Foreign Recruit :)

Beruf: Programmierer

10

09.06.2006, 11:15

Das einzige was ich kenne ist, die separaten Zeilen in separaten DBMS_OUTPUT.PUT_LINE darzustellen, und dazwischen DBMS_OUTPUT.NEW_LINE() Sonst benutzt man auch <br> aber ich glaube das geht nur in WEB-Anwendungen weiss nicht genau
Mehr Bsp unter: http://www.psoug.org/reference/dbms_output.html



Ich habe auch eine frage: was bekommst du als Ergebniss in 3b) bei mir kommt
Enterprise eine TV Serie und wie verstehst du die erste Bem in der Aufgabestellung, dass ein Film mehrmals in der Ausgabe erscheinen kann, wie kann man das beheben

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Jojo« (09.06.2006, 11:42)


XAX

Junior Schreiberling

  • »XAX« ist männlich

Beiträge: 207

Registrierungsdatum: 25.12.2004

11

09.06.2006, 11:52

EDIT: Hat sich erledigt, es lag an einem dummen Tippfehler.

PS: Es gibt hier einfach nicht genügend Smilies um meine Emotionen auszudrücken...

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »XAX« (09.06.2006, 12:16)


Jojo

Trainee

  • »Jojo« ist männlich

Beiträge: 94

Registrierungsdatum: 16.11.2005

Wohnort: Foreign Recruit :)

Beruf: Programmierer

12

09.06.2006, 11:55

Von der Fehlermeldung ist es nicht klar wo das Problem liegt. Scick die beiden Zeilen wo das Problem trifft

Jim Rakete

Trainee

  • »Jim Rakete« ist männlich

Beiträge: 50

Registrierungsdatum: 04.06.2005

Beruf: Mathe/Informatik

13

09.06.2006, 12:02

@jojo: ich bekomme als Ergebnis: Enterprise (tv series 2001) Star Trek: Nemesis (cinema 2002) - und hab's auch mal "per Hand" nachgerechnet, also mir immer die jeweiligen Nachfolger ab Film Nummer 221260 ausgeben lassen. Aber ich kann mir schon denken, wo dein Problem liegt, hatte dieses Ergebnis nämlich zunächst auch... Man muß gucken, was der Cursor macht, wenn mehr als ein Nachfolgefilm vorhanden ist - er darf nicht nur den ersten "weiterverfolgen".

@xax: Rekursion ist eigentlich nicht weiter wild, man konnte ja z.B. auch schon die Fibonacci-Zahlen auf Blatt 6 so erstellen. Ich habe eine PROCEDURE last_successors(fmovie NUMBER) und rufe sie dann rekursiv auf mit last_successors(neuer_wert) - vielleicht ist es bei dir ja sogar nur ein Schreibfehler (identifier 'LAST_SUCESSORS' - da fehlt ein c!)

Jojo

Trainee

  • »Jojo« ist männlich

Beiträge: 94

Registrierungsdatum: 16.11.2005

Wohnort: Foreign Recruit :)

Beruf: Programmierer

14

09.06.2006, 12:11

das klingt logisch, aber mir ist es schwer es vorzustellen wie das realisiert wuerde :) Wenn ich den Cursor immer wieder rekursiv auffrufe er "fetcht" nur eine Zeile, bei mir ist es mindestens so Oder soll ich eine Schleife dazu baue??
Aber dann kriege ich eine Rekursion in einer Schleife :(

iriania

Junior Schreiberling

  • »iriania« ist weiblich

Beiträge: 222

Registrierungsdatum: 24.11.2003

Wohnort: Waqwaq

Beruf: Wie? Ich studiere? seit wann denn?

15

15.06.2006, 22:23

bei Aufgabe 2b bekomme ich als Ergebnis
'no rows selected', wenn jobs(person)='writer/actor'
wenn ich dagegen als jobs(person) ENTWEDER 'writer'
oder 'actor' nehme, kommt eine lange Liste von Namen heraus
woran könnte das liegen?
:(
(1a gibt mir bei Woody Allen das gewünschte Ergebnis, funktioniert also...)

edit: alles klar, lag nur daran, dass ich ein Leerzeichen vergaß
('writer/ actor' funktioniert!)
:D

40 Namen kommen bei mir raus. Stimmt die Zahl?
...und sie dreht sich doch!

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »iriania« (15.06.2006, 22:40)


XAX

Junior Schreiberling

  • »XAX« ist männlich

Beiträge: 207

Registrierungsdatum: 25.12.2004

16

16.06.2006, 00:04

jo