Ich versuche, eine Eingabevariable in pl/SQL zuzuweisen.Wie weisen Sie einer Spalte in plsql eine anonyme Variable zu?
Ich möchte die Datenbank abfragen, indem ich den Benutzer department_id eingibt und den Vornamen, den Nachnamen und das Gehalt ausgibt. Das Gehalt ist das zweithöchste Gehalt in der Tabelle.
declare
v_dept_id int;
Begin
Select emp1.first_name, emp1.last_name, emp1.salary, emp1.department_id
From employees emp1
Where (1) =
(select count(distinct(emp1.salary))
From employees emp2
Where emp2.salary > emp1.salary) ;
End;
Klärung EDIT: bearbeiteten ich den Code V_dept_id enthalten aber es erklären
v_dept_id int laufen doesnt;
Begin
Select emp1.first_name, emp1.last_name, emp1.salary, emp1.department_id
into v_dept_id
From employees emp1
Where ((1) =
(select count(distinct(emp1.salary))
From employees emp2
Where emp2.salary > emp1.salary)) and v_dept_id = '&Enter_dept_id' ;
End;
Fehler:
Error starting at line : 4 in command -
declare
v_dept_id int;
Begin
Select emp1.first_name, emp1.last_name, emp1.salary, emp1.department_id
into v_dept_id
From employees emp1
Where ((1) =
(select count(distinct(emp1.salary))
From employees emp2
Where emp2.salary > emp1.salary)) and v_dept_id = '&Enter_dept_id' ;
End;
Error report -
ORA-06550: line 6, column 16:
PL/SQL: ORA-00947: not enough values
ORA-06550: line 5, column 1:
PL/SQL: SQL Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
EDIT2 basierend auf Antwort unten Feedback mit dem Fehler Ich weiß nicht, wie die eine Zahl in der Aufforderung korrekt eingeben lassen
declare
v_dept_id number;
v_fname varchar(50);
v_lname varchar(50);
v_salary NUMBER(8,2);
Begin
Select emp1.department_id, emp1.first_name, emp1.last_name, emp1.salary
into v_dept_id, v_fname, v_lname, v_salary
From employees emp1
Where ((1) =
(select count(distinct(emp1.salary))
From employees emp2
Where emp2.salary > emp1.salary)) and v_dept_id = '&Enter_dept_id' ;
End;
Error starting at line : 1 in command -
declare
v_dept_id number;
v_fname varchar(50);
v_lname varchar(50);
v_salary NUMBER(8,2);
Begin
Select emp1.department_id, emp1.first_name, emp1.last_name, emp1.salary
into v_dept_id, v_fname, v_lname, v_salary
From employees emp1
Where ((1) =
(select count(distinct(emp1.salary))
From employees emp2
Where emp2.salary > emp1.salary)) and v_dept_id = '&Enter_dept_id' ;
End;
Error report -
ORA-01403: no data found
ORA-06512: at line 8
01403. 00000 - "no data found"
*Cause: No data was found from the objects.
*Action: There was no data from the objects which may be due to end of fetch.
Wo verwenden Sie v_dept_id? Frage ist nicht klar. in Plsql, wenn Sie Select-Anweisung verwenden, müssen Sie INTO-Klausel verwenden, um Werte in einige Variable zuzuweisen. –
gerade hinzugefügt es! aber es funktioniert nicht – Venom
Ich möchte einen PLSQL-Block erstellen, der als Eingabe eine Abteilungsnummer verwendet und den Vor- und Nachnamen des Mitarbeiters und das Gehalt des Mitarbeiters ausgibt, der das zweithöchste Gehalt innerhalb dieser Abteilung hat. – Venom