Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Duda SQL%NOTFOUND

Estas en el tema de Duda SQL%NOTFOUND en el foro de Oracle en Foros del Web. Bueno, en primer lugar un saludo a todo el mundo ya que soy nuevo, en segundo a ver si podéis echarme una mano con esta ...
  #1 (permalink)  
Antiguo 15/05/2011, 12:54
 
Fecha de Ingreso: mayo-2011
Mensajes: 9
Antigüedad: 7 años, 4 meses
Puntos: 1
Duda SQL%NOTFOUND

Bueno, en primer lugar un saludo a todo el mundo ya que soy nuevo, en segundo a ver si podéis echarme una mano con esta cuestión que me he encontrado referente a la certificación de oracle 1z0-146:


Examine the structure of the EMPLOYEES table in the SCOTT schema. Name Null? Type ----------------------- --------------- --------------- EMPLOYEE_ID NOT NULL NUMBER(6) FIRST_NAME VARCHAR2(20) LAST_NAME NOT NULL VARCHAR2(25) SALARY NOT NULL NUMBER(8,2) COMMISSION_PCT NUMBER(2,2) DEPARTMENT_ID NUMBER(4) View the Exhibit and examine the code for the EMP_TOTSAL procedure created by user SCOTT. Which statement is true regarding the EMP_TOTSAL procedure?
Exhibit:


Options:
1. It is created successfully, but displays the correct output message only for existent employee IDs.
2. It is created successfully and displays the correct output message for both existent and nonexistent employee IDs.
3. It generates an error because the %NOTFOUND attribute cannot be used in combination with a SELECT INTO statement.
4. It generates an error because a user-defined exception has to be included whenever the %NOTFOUND attribute is used in combination with a SELECT INTO statement.


Según la respuesta la opción válida sería la primera pero no entiendo porque no se mostrarían los empleados cuyos ID no existen.

A ver si algunos lo sabéis. Saludos y gracias
  #2 (permalink)  
Antiguo 16/05/2011, 07:30
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.977
Antigüedad: 9 años, 7 meses
Puntos: 358
Respuesta: Duda SQL%NOTFOUND

Y donde está el procedimiento EMP_TOTSAL?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 16/05/2011, 16:49
 
Fecha de Ingreso: mayo-2011
Mensajes: 9
Antigüedad: 7 años, 4 meses
Puntos: 1
Respuesta: Duda SQL%NOTFOUND

Hola, el procedimiento es el que aparece en la imagen.
Quizás tenga algún problema con el navegador pero a mi me aparece justo donde dice Exhibit: , justo antes de las opciones.

Si no se ve házmelo saber por favor.

Saludos y gracias
  #4 (permalink)  
Antiguo 16/05/2011, 19:31
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.977
Antigüedad: 9 años, 7 meses
Puntos: 358
Respuesta: Duda SQL%NOTFOUND

No se veia desde mi oficina

No se mostrarían porque no cumplirían con la condición.
Ya has visto la condición que hay en el WHERE?


saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 17/05/2011, 06:13
 
Fecha de Ingreso: mayo-2011
Mensajes: 9
Antigüedad: 7 años, 4 meses
Puntos: 1
Respuesta: Duda SQL%NOTFOUND

Cita:
Iniciado por huesos52 Ver Mensaje
No se veia desde mi oficina

No se mostrarían porque no cumplirían con la condición.
Ya has visto la condición que hay en el WHERE?


saludos
Gracias por responder,

Veo la condición del WHERE pero entiendo que si no se encuentra empleado para un determinado employed_id se levantará la excepción NO_DATA_FOUND pero en este caso SQL%NOTFOUND devolvería TRUE ya que no encuentra empleado y debería entrar en el IF y mostrar el mensaje correspondiente, no?.

Saludos.
  #6 (permalink)  
Antiguo 17/05/2011, 07:13
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.977
Antigüedad: 9 años, 7 meses
Puntos: 358
Respuesta: Duda SQL%NOTFOUND

No. Y esto se da por la asignación con la clausula INTO.
Estas tratando de meter en una variable el resultado de una consulta que no existe.

Al hacer la operación la excepción del bloque pl se ejecuta y nisiquiera termina de ejecutarse ni validar si se cumple o no.

SQL%NOTFOUND funciona bien para sentencias DML y no de consulta.
Por ejemplo:
DELETE FROM tabla WHERE codigo=786941;
IF (SQL%NOTFOUND)
dbms_output.put_line('NO EXISTE EL EMPLEADO');
END IF;
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 17/05/2011, 12:19
 
Fecha de Ingreso: mayo-2011
Mensajes: 9
Antigüedad: 7 años, 4 meses
Puntos: 1
Respuesta: Duda SQL%NOTFOUND

Uhhh ok, pensé que el SQL%NOTFOUND suprimiría la excepción.

Muchas gracias, me ha sigo de gran ayuda

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:36.