Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/11/2010, 22:45
Duex
 
Fecha de Ingreso: noviembre-2010
Mensajes: 1
Antigüedad: 13 años, 5 meses
Puntos: 0
Pregunta Problemas con EXECUTE. ORA-00900

Saludos a todos los presentes. Soy nuevo en este foro y estoy utilizando Oracle Database Enterprise. Soy un estudiante y estoy viendo base de datos.

Estoy con un problema medio extraño a mi parecer. Eh creado un procedimiento llamado "modify_salary_by_number"

create or replace PROCEDURE hc.modify_salary_by_number
(p_emp_id IN NUMBER,
p_new_salary hc.employees.salary%TYPE)
IS
dyn_error VARCHAR2(255);
BEGIN
UPDATE hc.employees
SET salary = p_new_salary
WHERE employee_id = p_emp_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
dyn_error := 'Id no Found';
RAISE_APPLICATION_ERROR(-41251,dyn_error);
WHEN OTHERS THEN
dyn_error := 'Id Incorrect or Salary exceeds the maximun';
RAISE_APPLICATION_ERROR(-51251,dyn_error);
END modify_salary_by_number;
/

Cuando lo compilo, lo crea sin problemas. Pero cuando ejecuto la sentencia:
EXECUTE modify_salary_by_number(4, 1451)
Sale el error ORA-00900: Sentencia SQL Invalida. Porque?

Pero cuando lo ejecuto en archivos de comandos me sale: "Block anonymous completed"
Y cuando hago un SELECT * from EMPLOYEES; para ver los datos, me doy cuenta que si lo cambio.

Sin embargo, cuando hago un: EXECUTE modify_salary_by_number("" , 1451)
Lo ejecuto en archivos de comandos (Para probar los errores) me sale: "Block anonymous completed"

Y no entiendo porque, Si los parametros deben ser NUMBER.

No entiendo la verdad... Quisiera que me absuelvan mis dudas porfavor.