Este es el programa que escribí:El identificador debe ser declarado? PL error/SQL
set serveroutput on;
declare
b empl.name1%type;
r varchar; --can i change this to r empl.designation%type; ?
begin
r:=&designation; --getting input for the designation
dbms_output.put_line('hello'); --random output to check for errors
select name1 into b from empl where designation=r; --i want all the names from the table
dbms_output.put_line('name'||b); --employee where designation is as entered
dbms_output.put_line(' closed'); --by user,should i loop this statement?
end;
Cuando entro designación como 'a' (que se introduce en la tabla ya) me da un error identifier 'a' is not declared
. Qué significa eso? ¿La instrucción select toma una fila a la vez? Entonces, si hago un bucle obtendré todas las filas? ¿O debería usar un cursor? ¿Por qué SQL Developer no acepta %rowtype
?
he cambiado de programa para esto:
set serveroutput on;
declare
cursor cempl is select name1,designation from empl;
b empl.name1%type;
des empl.designation%type;
r empl.designation%type;
begin
r:='meow';
dbms_output.put_line('hello');
open cempl;
if cempl%ISOPEN then
loop
fetch cempl into b,des;
if des=r then
dbms_output.put_line('name'||b);
end if;
exit when cempl%notfound;
end loop;
close cempl;
dbms_output.put_line(' closed');
end if;
end;
En cuanto tenga una entrada como r:=&r
e imaginar entro 'a' Dice identificador 'a' debe declararse, pero es un valor de la tabla ! ¿Por qué debería declararse, pero si se da en el programa como arriba no da un error? ¡En cambio, repite la última fila dos veces!
gracias, sí lo noté y lo cambié;) – LoveMeow