Hola buenas, tengo una duda con respecto a este lenguaje de programación. Para ello os dejo este ejemplo de un ejercicio básico.
Modificar los datos de un departamento, se recoge como parámetros el identificador, el jefe y la localidad. Habrá mensaje de realización correcta. Si no existe el departamento, se mandará mensaje.
CREATE OR REPLACE FUNCTION EJER1
(IDENTIFICADOR IN NUMBER, JEFE IN NUMBER,LOCALIDAD IN NUMBER) RETURN VARCHAR2 AS
id_departamento departments.department_id%type;
BEGIN
Select department_id into id_departamento
From departments
Where department_id = identificador;
Update departments
Set department_id=identificador,manager_id=jefe,location_id=localidad
Where department_id = identificador;
RETURN 'Realización correcta';
exception
When no_data_found then
Return 'No existe el departamento';
END EJER1;
La solución es correcta, pero dado a que hemos tenído pocas clases de programación hay cosas que no entiendo. Por lo cual mi pregunta es:
¿Qué significa SELECT x INTO y ? Me refiero a que no entiendo por qué tenemos que hacer un select antes de hacer cualquier otra acción, ya bien sea update, delete, insert etc..
Un saludo!
Un SELECT INTO sirve para guardar lo que retorne el SELECT en una variable para su uso posterior, en este caso en "id_departamento".
Me parece que para este ejercicio se hace primero un SELECT INTO para el manejo de la excepción "no_data_found". Si haces el UPDATE directo y resulta que no existe el id del departamento, el UPDATE no tiene por qué fallar, más bien concluye con éxito pero no actualiza ningún registro. Sin embargo un SELECT INTO lanzará un error cuando no haya resultados, así puedes asegurarte de mandar el mensaje correcto.